如何使用正则表达式匹配一个多行的字符串?

时间:2022-08-20 18:49:11
比如要在代码中匹配下面的内容
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
瞎写的,只是说明可以处理多行,剩下的你慢慢研究吧。

#4


原来问到了linux区,回答的人不多。所以转到脚本这里问问有没有高手弄1 下。
谢谢x86(大雪) 了。

#5


用perl

可以把行分隔符从"\n"变成";"

#!/usr/bin/perl

$/ = ';'; #可以把行分隔符从"\n"变成";"
while(<>){
    print "[$1] [$3]\n";  if(/\w+\:\s+(\w+)\s*\((.|\n)*?(\)\s*;)$/m);    
}

#6


to xyzxyz1111
我和经理沟通过。他说perl懂得人少。将来不好修改。就让我用sed。
所以没办法。我只好想办法了。

#7


会perl的人比会sed的人多吧。。。
再说了,如果是要忽略\n来匹配,使用 m///s 就可以了啊~

看看perldoc perlre,或者《Perl Best Practices》中关于modifiers的说明就可以了。

#8


perl的正则匹配中可以在末尾添加"s",如:
str =~m/test/s,这样就可以对多行字符串进行匹配
友情提示:这类问题可以去cu论坛中问,那边perl牛人相对多些

#9


是在没有办法可以用土一点的办法啦。首先遍历一遍文本,将type2转化成type1的形式,然后再匹配,就可以使用单行匹配方式。因为type1和typ2都比较简单,这样做应该也可以。

#10


是不是我又问错地方了。
各位大哥,我其实想问下正则语句如何跨行匹配。
到底哪个地方能回答我的问题呢?

#11


至少有三个人回答了你的问题了。真不知道你是不是用心看过别人的回贴,
难道自己也没有试一下?或者看看perldoc?学perl怎么可以这么……

#1


问了一天了没人回,自己顶一下。是不是我问错地方了?

#2


up帮顶

#3


确实没问到最合适的地方,你可以去脚本区去问问。

sed的话,可能比较麻烦,如果是perl或者shell,都会比较容易解决。
如果是sed,可以试一下这样:
sed '/*(/,/)/p' filename
瞎写的,只是说明可以处理多行,剩下的你慢慢研究吧。

#4


原来问到了linux区,回答的人不多。所以转到脚本这里问问有没有高手弄1 下。
谢谢x86(大雪) 了。

#5


用perl

可以把行分隔符从"\n"变成";"

#!/usr/bin/perl

$/ = ';'; #可以把行分隔符从"\n"变成";"
while(<>){
    print "[$1] [$3]\n";  if(/\w+\:\s+(\w+)\s*\((.|\n)*?(\)\s*;)$/m);    
}

#6


to xyzxyz1111
我和经理沟通过。他说perl懂得人少。将来不好修改。就让我用sed。
所以没办法。我只好想办法了。

#7


会perl的人比会sed的人多吧。。。
再说了,如果是要忽略\n来匹配,使用 m///s 就可以了啊~

看看perldoc perlre,或者《Perl Best Practices》中关于modifiers的说明就可以了。

#8


perl的正则匹配中可以在末尾添加"s",如:
str =~m/test/s,这样就可以对多行字符串进行匹配
友情提示:这类问题可以去cu论坛中问,那边perl牛人相对多些

#9


是在没有办法可以用土一点的办法啦。首先遍历一遍文本,将type2转化成type1的形式,然后再匹配,就可以使用单行匹配方式。因为type1和typ2都比较简单,这样做应该也可以。

#10


是不是我又问错地方了。
各位大哥,我其实想问下正则语句如何跨行匹配。
到底哪个地方能回答我的问题呢?

#11


至少有三个人回答了你的问题了。真不知道你是不是用心看过别人的回贴,
难道自己也没有试一下?或者看看perldoc?学perl怎么可以这么……