Ruby - Regex多行

T0n*_*rdi 0 ruby regex expression

我正在寻找搜索一些文件,看看他们是否在文件顶部有评论.

这是我正在寻找的:

#++
#    app_name/dir/dir/filename
#    $Id$
#--
Run Code Online (Sandbox Code Playgroud)

我把它作为一个REGEX并且做得很短:

:doc => { :test => '^#--\s+[filename]\s+\$Id'
if @file_text =~ Regexp.new(@rules[rule][:test])
....
Run Code Online (Sandbox Code Playgroud)

有什么建议?

hek*_*mgl 5

检查此示例:

string = <<EOF
#++
##    app_name/dir/dir/filename
##    $Id$
##--

foo bar
EOF

puts /#\+\+.*\n##.*\n##.*\n##--/.match(string)
Run Code Online (Sandbox Code Playgroud)

该模式匹配两行,##从两行开始,#++#--plus 开头并以plus 结尾,包括匹配中的那些边界.如果我的问题是正确的,这应该是你想要的.

您可以使用以下模式概括模式以匹配第一个#++和第一个 之间的所有内容#--(包括它们):

puts /#\+\+.*?##--/m.match(string)
Run Code Online (Sandbox Code Playgroud)