由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 也问个regular expression的问题
相关主题
这个有更好的算法吗?stl Compare为何需要重载()?
请问 regular expressionPERL问题
问个缺少逗号的数组赋值问题现在还有人猛钻研c++模板编程,generic programming, 甚至meta-programming么 模板编程简单用用还可以 我现在工作中能用到一点点。不过也是属于组里大牛搭好了架子的 我
[合集] 问个SOCKET问题啊 (转载)这个是undefined的吗?
问个BT问题 :)(c )求教:取串中的子串好方法
问个虚函数的作用这种问题该怎么编程处理
问个c++的弱问题继续请教C++重载问题,>>
问个find的问题 (转载)怎么生成表格(excel或其它的)?
相关话题的讨论汇总
话题: tray话题: media话题: value话题: print话题: substr
进入Programming版参与讨论
1 (共1页)
s********s
发帖数: 4011
1
regular expression用的不熟,请教一下各位高手
有以下输入
Print Media="Wh Paper", Type="A4 Size", Tray="Tray 1",PDL=PS, Orient=LS;
需要把item 和 value 分别extract 出来
string Item[]={"Print Media", "Type", "Tray", "PDL", "Orient"};
string Value[]={"Wh Paper", "A4 Size", "Tray 1", "PS", "LS"};
因为分隔符不统一,而且value有得有引号,有的没有,我可以
每种分别判断,感觉不太有效率,有没有
什么更有效的方法把值取出来?多谢!
j********g
发帖数: 88
k****z
发帖数: 550
3
If use Perl, first split then match with /^\s*(.+)=(\"?)(.+)\2$/
and move the trailing ";" from the last element. It works but may not be
very economic.
*************************************************
#!/usr/bin/perl -w
my $str = 'Print Media="Wh Paper", Type="A4 Size", Tray="Tray 1",PDL=PS,
Orient=LS;';
my @substr = split /,/, $str;
print "substr = @substr\n";
my @term;
my @value;
for (@substr) {
/^\s*(.+)=(\"?)(.+)\2$/; # \2 means match \" if there is \" before


【在 s********s 的大作中提到】
: regular expression用的不熟,请教一下各位高手
: 有以下输入
: Print Media="Wh Paper", Type="A4 Size", Tray="Tray 1",PDL=PS, Orient=LS;
: 需要把item 和 value 分别extract 出来
: string Item[]={"Print Media", "Type", "Tray", "PDL", "Orient"};
: string Value[]={"Wh Paper", "A4 Size", "Tray 1", "PS", "LS"};
: 因为分隔符不统一,而且value有得有引号,有的没有,我可以
: 每种分别判断,感觉不太有效率,有没有
: 什么更有效的方法把值取出来?多谢!

t*********s
发帖数: 5
4
it depends on what can show up in the quotation marks,
for example:
Media description="for example, '1' + '1' = '2';"
Is the above valid in your applications??
*** if no [,;=] in the quoted stuff, then it might be:
(?!\s)([^=,]+)=(["']?)([^,;]+)\2
check on $1(attr) and $3(value) for the attr-value pairs.
*** If on the other hand, you can have any graphic chars
enclosed in the RHS quotation marks, then
(?!\s)([^=,]+)=(?:(["'])(.+?)\2|(\S+))
check on $1 for attrs and the concatenation of
$3 a
1 (共1页)
进入Programming版参与讨论
相关主题
怎么生成表格(excel或其它的)?问个BT问题 :)(c )
call matlab within R (用system())问个虚函数的作用
《Python参考手册 (第4版)》[PDF]问个c++的弱问题
说实话遭人恨,这世界需要这么多干活的么?问个find的问题 (转载)
这个有更好的算法吗?stl Compare为何需要重载()?
请问 regular expressionPERL问题
问个缺少逗号的数组赋值问题现在还有人猛钻研c++模板编程,generic programming, 甚至meta-programming么 模板编程简单用用还可以 我现在工作中能用到一点点。不过也是属于组里大牛搭好了架子的 我
[合集] 问个SOCKET问题啊 (转载)这个是undefined的吗?
相关话题的讨论汇总
话题: tray话题: media话题: value话题: print话题: substr