我试图在包含代码和自定义注释标记的文件上运行正则表达式(ruby)。我想查找(/*+ ... +*/
)、单行或多行之间的所有文本。
鉴于:
/*+
# Testing Documentation #
## Another Documentation Line ##
This is also picked up
+*/
Some code here that is ignored
/*+ # More documentation # +*/
我想在
/*+ ... +*/
的打开和关闭之间匹配每组文本我试过下面的REG EX,它对单行示例非常有用。但是如果我启用了multiline选项,它将拾取第一个匹配项和最后一个匹配项之间的所有内容,而不是匹配两个或多个组。
/(?<=\/\*\+)(.*)(?=\+\*\/)/
谢谢
最佳答案
使中间的匹配不贪婪((.*?)
)这里有一条到红宝石的线:
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/