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"

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

気に入ったらシェアお願いします!

この記事を書いた人

こんにちは!カノといいます👓
インターネットやテクノロジー、ビジネスモデルや歴史(世界史・日本史)、美術などが好きです。メガネのせいか真面目っぽく見えるらしいですが、基本的には昔からいい加減な性格です。
このブログは昔からずっと個人的な日記みたいな感じで書いてきていて、基本的には個人的なログになりますが、興味のあるところだけ読んでいただけるとうれしいです。コメントやTwitterのフォローなどは大歓迎です。

コメント

コメントする

目次