我正在尝试在包含代码和自定义注释标记的文件上运行正则表达式(Ruby)。我想找到(/*+ ... +*/
),单行或多行之间的所有文本。
假设:
/*+
# Testing Documentation #
## Another Documentation Line ##
This is also picked up
+*/
Some code here that is ignored
/*+ # More documentation # +*/
我希望在/*+ ... +*/
我尝试了以下reg ex,它对单行示例很有用。但是如果我启用了多行选项,它会在第一个匹配和最后一个匹配之间选择所有内容,而不是匹配两个或更多个组。
/(?<=\/\*\+)(.*)(?=\+\*\/)/
由于
答案 0 :(得分:3)
让匹配在中间非贪婪((.*?)
)。这是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 # +*/"]
答案 1 :(得分:0)
也许那会对你有所帮助。这适用于JS:
/(?:\/\*\+)([\w\W]*?)(?=\+\*\/)/igm