阅 读 文 章

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

[来源:网上转载 (CSDN转载) | 作者:网友(sunlightasean) | 时间:2007-08-06 | 浏览:人次 ]

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

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.