正規表現での改行は「\r\n|\n|\r」
正規表現で改行を表す際は「\r\n|\n|\r」と表記します。「\r\n」「\n」「\r」はそれぞれ改行を意味する文字ですが環境によりどれが改行を表すのかが異なり、それらを網羅するために「\r\n|\n|\r」のような表記をします。
// 改行を表すコード
\r\n|\n|\r
// 検索対象
ピカチュウ
カイリュー
ヤドラン
ピジョン
// マッチする文字列
(それぞれの末尾の改行にマッチ)
OSによる改行コードの違い
改行コードにて「\r\n」「\n」「\r」のいずれを使うのかはOSによって基本的に異なります。ただしExcelをはじめとした一部のファイルはこれに依存しないため、どのOSを使う際にも意識して「\r\n|\n|\r」を使うのをおすすめします。
OS | 改行コード | 該当する正規表現 |
---|---|---|
Windows | CRLF (Carriage Return + Line Feed ) | \r\n |
Linux | LF (Line Feed) | \n |
Mac | LF (Line Feed) | \n |
Mac(※OS 9以前) | CR (Carriage Return) | \r |
シャワーズ
もともとCR(キャリッジリターン)とLF(ラインフィード)はタイプライターで使われていた名残から来ています。タイプライターの時代ではCRは入力位置を次行の左端へ持ってくることを、LFは次行の同じ列へ移動することを指していました。
ただパソコンにおけるCRとLFはいずれも改行という扱いになるため、表記や対応OSが異なれどほぼ同義として扱って差し支えないです。
「.」は改行以外のすべての文字
正規表現における「.」は改行以外のすべての文字を表します。裏を返すとを含んだすべての文字は表せないので、「.+」のように記述すると意図しない改行によって選択できない文字列を含む可能性があります。
改行を含むすべての文字は「[\s\S]」
改行を含むすべての文字は「[\s\S]」とすることで表現できます。
// 改行以外のすべての文字列
.+
// 改行含むすべての文字列
[\s\S]+
たとえば次のような4行にまたがる文字列にマッチさせたいとします。
// 検索対象の文字列
ピカチュウ
カイリュー
ヤドラン
ピジョン
このとき「.+」を使うとそれぞれの行ずつにしかマッチしません。
一方「[\s\S]+」を使うと改行含めて全体でマッチさせられます。
どちらが優れているというわけでもないため、適宜使い分けましょう。