ruby - 使用正则表达式查找多个开始和结束标记之间的内容

标签 ruby regex

我正在尝试对包含代码和自定义评论标签的文件运行正则表达式 (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/

相关文章:

regex - 使用正则表达式模式验证 bash 中的用户输入时间

ruby-on-rails - Rails 5 - 如何获取 activerecord 的 serializable_hash?

mysql - activerecord 3.2.2 与多个连接的关联问题

ruby - 在 TCPServer (Ruby) 中,我如何从客户端获取 IP/MAC?

ruby - 哈希迭代不返回子目录内容

Java 标记字符串

python - 正则表达式查找文本文件中字符串的所有出现位置。如何?

regex - 如何在 Grep 中使用反向引用

ios - 验证 iOS 中电子邮件域中的字符数?

ruby - 右/左鼠标单击 watir webdriver 中的屏幕