Perl Regex帮助

时间:2010-07-16 13:45:00

标签: regex perl

我希望从带有前缀

的文件中匹配字符串
/**

并有一个后缀

*/

中间有任意数量的字符/空格/换行符。

例如:

/** anything
    anything
*/

到目前为止我有m/(\/\*\*).*?(\*\/)/,但是这不能处理换行符。我知道修复必须简单,但我的正则表达式经验非常有限 奖金问题:有没有人有一个很好的网站来学习正则表达式?

3 个答案:

答案 0 :(得分:3)

在其后添加s modifier

m/(\/\*\*).*?(\*\/)/s

但是如果它是您正在操作的源代码,请小心:

print 'a string /**';
int a = b + c;
print '*/';

// /**
a = a - c;
// */

如果要学习正则表达式,真的只有一个在线资源:http://www.regular-expressions.info/

答案 1 :(得分:0)

不使用/ s with make'。'表现不同,以下也应该有效:

m/(\/\*\*)(\r?\n|.)*(\*\/)/

有学习perl的地方吗?

http://perldoc.perl.org/ http://perldoc.perl.org/index-tutorials.html 这是我的终极参考。

但是如果你不喜欢以手工风格阅读某些东西,那就有点烦人了。 尝试来自O'Reilly的杰弗里弗里德的掌握正则表达式,这更有趣。

http://oreilly.com/catalog/9781565922570

答案 2 :(得分:0)

您的特定正则表达式(使用换行符)可与\/\*\*[\d\D]*?\*\/匹配\D的副作用是它与换行符匹配,并且可以这种方式使用。

在Perl中,您还可以使用Regexp::Common查找各种源代码注释。

已经提到了一些最好的链接(Friedl的书和http://www.regular-expressions.info/

我的正则表达式网站是:

  1. Perl perlre tutorial。 Perl正则表达式的最佳介绍。
  2. Perl perlre Perl的正则表达式文档
  3. Perl perlre quick reference快速入门指南
  4. Regular Expressions, A Favorite Parsetime
  5. Perlmonks的
  6. Pattern Matching, Regular Expressions and Parsing Tutorials
  7. Explain Regex
  8. RegExr在线正则表达式测试器
  9. Regular Expression Library
  10. Regex Powertoy在线测试员
  11. BRE and ERE参考
  12. 拉里沃尔的Apocalypse 5: Pattern Matching