- Home ›
 - Ruby入門 ›
 - Ruby正規表現の使い方
 
メタ文字(.)が改行にマッチする(/m修飾子)
パターンで「/m修飾子」を指定すると、メタ文字(.)が改行にもマッチするようになります。ここでは Ruby の正規表現で利用可能な「/m修飾子」の使い方について解説します。
(Last modified: )
メタ文字(.)が改行にマッチする
			メタ文字(.)はデフォルトでは改行以外の文字にマッチしますが、 /m 修飾子を指定するとメタ文字(.)が改行にもマッチするようになります。書式は次の通りです。
			
/パターン/m
具体的な例で考えてみます。
/ .+ / =~ "One Hamburger\nand a Coffee please"
			/ .+ / は空白で始まり任意の文字が 1 個以上続き空白で終わる文字列にマッチします。この時 . は改行以外の任意の文字にマッチするため今回は「 a Coffee 」にマッチします。
			
			同じ正規表現に対して /m修飾子を付けてみます。
			
/ .+ /m =~ "One Hamburger\nand a Coffee please"
			/ .+ /m は空白で始まり任意の文字が 1 個以上続き空白で終わる文字列にマッチします。この時 . は改行にもマッチするため今回は「 Hamburger\nand a Coffee 」にマッチします。
			
			このように /m 修飾子を指定することで、複数行にわたる文字列もあたかも1行に記述されたように扱うことができます。
			
では簡単なプログラムで確認してみます。
# encoding: UTF-8
def check1(str)
  if / .+ / =~ str then
    puts("○" + str)
    puts("[" + $& + "]")
  else
    puts("×" + str)
  end
end
def check2(str)
  if / .+ /m =~ str then
    puts("○" + str)
    puts("[" + $& + "]")
  else
    puts("×" + str)
  end
end
puts("/ .+ / にマッチするかどうか")
check1("One Hamburger\nand a Coffee please")
puts()
puts("/ .+ /m にマッチするかどうか")
check2("One Hamburger\nand a Coffee please")
下記のように実行して下さい。
			
			
-- --
Ruby の正規表現で利用可能な「/m修飾子」の使い方について解説しました。
( Written by Tatsuo Ikura )
				著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。