Rubyで正規表現の「.」に改行もマッチさせるためのオプション

正規表現のなかで、「.」は任意の一文字にマッチする演算子ですが、ここでいう「任意の文字」のなかに「改行文字(\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"

このように改行がマッチし、複数行に対してパターンを指定することができます。

コメント

コメントする

目次