我试图在包含代码和自定义注释标记的文件上运行正则表达式(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/

10-11 08:14