正規表現のなかで、「.」は任意の一文字にマッチする演算子ですが、ここでいう「任意の文字」のなかに「改行文字(\n)」が含まれるかどうかは処理系によって違います。
Rubyでは、正規表現リテラルの後ろにmオプションをつけることで改行にマッチさせることができます。
サンプルコード
#! /usr/bin/env ruby
# multi_line_match_sample.rb
def main
str = DATA.read
if str =~ /(pi.+bar)/m
p "mオプションつき -> " + $1
end
if str =~ /(pi.+bar)/
p "mオプションなし -> " + $1
end
end
main
__END__
hogepiyo
foobarbuzz
結果
$ ruby multi_line_match_sample.rb "mオプションつき -> piyo\nfoobar"
このように改行がマッチし、複数行に対してパターンを指定することができます。
コメント