type1:
functionName (paramA1, paramA2) ;
type2:
functionName (paramA3,
paramA4) ;
也就是说,要在代码中找到函数调用点。
对于type1来说,
我匹配函数开头部分[functionName (] 和结尾部分[) ;]就可以了。
对于type2来说,
如何在一个正则表达式中匹配多行呢?
应用在linux下的sed中的脚本匹配。
谢谢各位高手指教一二。
11 个解决方案
#1
问了一天了没人回,自己顶一下。是不是我问错地方了?
#2
up帮顶
#3
确实没问到最合适的地方,你可以去脚本区去问问。
sed的话,可能比较麻烦,如果是perl或者shell,都会比较容易解决。
如果是sed,可以试一下这样:
sed '/*(/,/)/p' filename
瞎写的,只是说明可以处理多行,剩下的你慢慢研究吧。
sed的话,可能比较麻烦,如果是perl或者shell,都会比较容易解决。
如果是sed,可以试一下这样:
sed '/*(/,/)/p' filename
瞎写的,只是说明可以处理多行,剩下的你慢慢研究吧。
#4
原来问到了linux区,回答的人不多。所以转到脚本这里问问有没有高手弄1 下。
谢谢x86(大雪) 了。
谢谢x86(大雪) 了。
#5
用perl
可以把行分隔符从"\n"变成";"
#!/usr/bin/perl
$/ = ';'; #可以把行分隔符从"\n"变成";"
while(<>){
print "[$1] [$3]\n"; if(/\w+\:\s+(\w+)\s*\((.|\n)*?(\)\s*;)$/m);
}
可以把行分隔符从"\n"变成";"
#!/usr/bin/perl
$/ = ';'; #可以把行分隔符从"\n"变成";"
while(<>){
print "[$1] [$3]\n"; if(/\w+\:\s+(\w+)\s*\((.|\n)*?(\)\s*;)$/m);
}
#6
to xyzxyz1111
我和经理沟通过。他说perl懂得人少。将来不好修改。就让我用sed。
所以没办法。我只好想办法了。
我和经理沟通过。他说perl懂得人少。将来不好修改。就让我用sed。
所以没办法。我只好想办法了。
#7
会perl的人比会sed的人多吧。。。
再说了,如果是要忽略\n来匹配,使用 m///s 就可以了啊~
看看perldoc perlre,或者《Perl Best Practices》中关于modifiers的说明就可以了。
再说了,如果是要忽略\n来匹配,使用 m///s 就可以了啊~
看看perldoc perlre,或者《Perl Best Practices》中关于modifiers的说明就可以了。
#8
perl的正则匹配中可以在末尾添加"s",如:
str =~m/test/s,这样就可以对多行字符串进行匹配
友情提示:这类问题可以去cu论坛中问,那边perl牛人相对多些
str =~m/test/s,这样就可以对多行字符串进行匹配
友情提示:这类问题可以去cu论坛中问,那边perl牛人相对多些
#9
是在没有办法可以用土一点的办法啦。首先遍历一遍文本,将type2转化成type1的形式,然后再匹配,就可以使用单行匹配方式。因为type1和typ2都比较简单,这样做应该也可以。
#10
是不是我又问错地方了。
各位大哥,我其实想问下正则语句如何跨行匹配。
到底哪个地方能回答我的问题呢?
各位大哥,我其实想问下正则语句如何跨行匹配。
到底哪个地方能回答我的问题呢?
#11
至少有三个人回答了你的问题了。真不知道你是不是用心看过别人的回贴,
难道自己也没有试一下?或者看看perldoc?学perl怎么可以这么……
难道自己也没有试一下?或者看看perldoc?学perl怎么可以这么……
#1
问了一天了没人回,自己顶一下。是不是我问错地方了?
#2
up帮顶
#3
确实没问到最合适的地方,你可以去脚本区去问问。
sed的话,可能比较麻烦,如果是perl或者shell,都会比较容易解决。
如果是sed,可以试一下这样:
sed '/*(/,/)/p' filename
瞎写的,只是说明可以处理多行,剩下的你慢慢研究吧。
sed的话,可能比较麻烦,如果是perl或者shell,都会比较容易解决。
如果是sed,可以试一下这样:
sed '/*(/,/)/p' filename
瞎写的,只是说明可以处理多行,剩下的你慢慢研究吧。
#4
原来问到了linux区,回答的人不多。所以转到脚本这里问问有没有高手弄1 下。
谢谢x86(大雪) 了。
谢谢x86(大雪) 了。
#5
用perl
可以把行分隔符从"\n"变成";"
#!/usr/bin/perl
$/ = ';'; #可以把行分隔符从"\n"变成";"
while(<>){
print "[$1] [$3]\n"; if(/\w+\:\s+(\w+)\s*\((.|\n)*?(\)\s*;)$/m);
}
可以把行分隔符从"\n"变成";"
#!/usr/bin/perl
$/ = ';'; #可以把行分隔符从"\n"变成";"
while(<>){
print "[$1] [$3]\n"; if(/\w+\:\s+(\w+)\s*\((.|\n)*?(\)\s*;)$/m);
}
#6
to xyzxyz1111
我和经理沟通过。他说perl懂得人少。将来不好修改。就让我用sed。
所以没办法。我只好想办法了。
我和经理沟通过。他说perl懂得人少。将来不好修改。就让我用sed。
所以没办法。我只好想办法了。
#7
会perl的人比会sed的人多吧。。。
再说了,如果是要忽略\n来匹配,使用 m///s 就可以了啊~
看看perldoc perlre,或者《Perl Best Practices》中关于modifiers的说明就可以了。
再说了,如果是要忽略\n来匹配,使用 m///s 就可以了啊~
看看perldoc perlre,或者《Perl Best Practices》中关于modifiers的说明就可以了。
#8
perl的正则匹配中可以在末尾添加"s",如:
str =~m/test/s,这样就可以对多行字符串进行匹配
友情提示:这类问题可以去cu论坛中问,那边perl牛人相对多些
str =~m/test/s,这样就可以对多行字符串进行匹配
友情提示:这类问题可以去cu论坛中问,那边perl牛人相对多些
#9
是在没有办法可以用土一点的办法啦。首先遍历一遍文本,将type2转化成type1的形式,然后再匹配,就可以使用单行匹配方式。因为type1和typ2都比较简单,这样做应该也可以。
#10
是不是我又问错地方了。
各位大哥,我其实想问下正则语句如何跨行匹配。
到底哪个地方能回答我的问题呢?
各位大哥,我其实想问下正则语句如何跨行匹配。
到底哪个地方能回答我的问题呢?
#11
至少有三个人回答了你的问题了。真不知道你是不是用心看过别人的回贴,
难道自己也没有试一下?或者看看perldoc?学perl怎么可以这么……
难道自己也没有试一下?或者看看perldoc?学perl怎么可以这么……