我正在尝试对包含代码和自定义评论标签的文件运行正则表达式 (Ruby)。我想查找 (/*+ ... +*/
)、单行或多行之间的所有文本。
给定:
/*+
# Testing Documentation #
## Another Documentation Line ##
This is also picked up
+*/
Some code here that is ignored
/*+ # More documentation # +*/
我想在 /*+ ... +*/
的开始和结束之间匹配每组文本
我尝试了以下 reg ex,它非常适合单行示例。但是,如果我启用多行选项,它会选择第一个匹配项和最后一个匹配项之间的所有内容,而不是匹配两个或多个组。
/(?<=\/\*\+)(.*)(?=\+\*\/)/
谢谢
最佳答案
使中间的匹配非贪婪((.*?)
)。这是 Rubular 的永久链接:
http://rubular.com/r/0SuNNJ3vy6
我使用的表达式是 /(\/\*\+)(.*?)(\+\*\/)/m
, 根据需要进行微调。
text.scan(/(\/\*\+)(.*?)(\+\*\/)/m).map(&:join)
#=> ["/*+\n # Testing Documentation #\n ## Another Documentation Line ##\n This is also picked up\n+*/", "/*+ # More documentation # +*/"]
关于ruby - 使用正则表达式查找多个开始和结束标记之间的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9891501/