- 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 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。