正規表現:改行コードを含む全ての文字列の表現

最終更新:2018-01-10 by Joe

正規表現における「改行を含むあらゆる文字」の表現方法です。

改行コードを含む全ての文字列を表現する方法

正規表現で、「.*」を使って「改行以外の文字列の0個以上の連続」を表現することはできますが、文字列中に改行があるとそこで途切れてしまします。これは、そもそも、特殊文字「.」が「改行以外のすべての1文字」という仕様だからです。

「改行を含めたすべての文字列」を対象としたい時は、工夫が必要です。

下記の例では、2角メタ文字を利用します。

  • \s :空白、タブ、フォーム フィードなどの任意の空白文字
  • \S:空白文字以外の任意の文字

これらを組み合わせて、[]による「文字クラス」とすることで「カッコ内にふくまれるいずれかの文字」を表現できます。

PHPのでの記述例

$subject = "The text you need to search.";

// 改行コードを含むべての文字列
if ( preg_match( '#[\s\S]*#', $subject ) )
  echo "Matched";

[]の角括弧による表現は、「文字セット」や「文字クラス」と呼ばれ、カッコ内にふくまれるすべての文字を対象とします。

上記の例は、\sか、\Sのいずれかの文字で、0回以上繰り返す、最長のマッチを探す事になります。

参考