正規表現における「改行を含むあらゆる文字」の表現方法です。
改行コードを含む全ての文字列を表現する方法
正規表現で、「.*」を使って「改行以外の文字列の0個以上の連続」を表現することはできますが、文字列中に改行があるとそこで途切れてしまします。これは、そもそも、特殊文字「.」が「改行以外のすべての1文字」という仕様だからです。
「改行を含めたすべての文字列」を対象としたい時は、工夫が必要です。
下記の例では、2角メタ文字を利用します。
- \s :空白、タブ、フォーム フィードなどの任意の空白文字
- \S:空白文字以外の任意の文字
これらを組み合わせて、[]による「文字クラス」とすることで「カッコ内にふくまれるいずれかの文字」を表現できます。
PHPのでの記述例
$subject = "The text you need to search."; // 改行コードを含むべての文字列 if ( preg_match( '#[\s\S]*#', $subject ) ) echo "Matched";
[]の角括弧による表現は、「文字セット」や「文字クラス」と呼ばれ、カッコ内にふくまれるすべての文字を対象とします。
上記の例は、\sか、\Sのいずれかの文字で、0回以上繰り返す、最長のマッチを探す事になります。