我希望从带有前缀
的文件中匹配字符串/**
并有一个后缀
*/
中间有任意数量的字符/空格/换行符。
例如:
/** anything
anything
*/
到目前为止我有m/(\/\*\*).*?(\*\/)/
,但是这不能处理换行符。我知道修复必须简单,但我的正则表达式经验非常有限
奖金问题:有没有人有一个很好的网站来学习正则表达式?
答案 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的杰弗里弗里德的掌握正则表达式,这更有趣。
答案 2 :(得分:0)
您的特定正则表达式(使用换行符)可与\/\*\*[\d\D]*?\*\/
匹配\D
的副作用是它与换行符匹配,并且可以这种方式使用。
在Perl中,您还可以使用Regexp::Common查找各种源代码注释。
已经提到了一些最好的链接(Friedl的书和http://www.regular-expressions.info/)
我的正则表达式网站是: