正規表現について

正規表現とは

 正規表現は、「通常の文字」と、「メタキャラクタ」と呼ばれる特殊な文字を使い、「こんな感じの文字の並び」(文字パターン)を検索するための記述方法です。

 「通常の文字」は、「abcdef……」「01234……」「!#%……」「あいう……」「漢字……」などの文字です。

 「メタキャラクタ」は、「.」「+」「*」「|」など、様々な記号が用いられます。

 こうした「メタキャラクタ」自身を、通常の文字として扱う際は、その前に「\」(バックスラッシュ)を付けて、「\.」「\+」「\*」「\|」とします。「\」自身は「\\」と書きます。

バックスラッシュについて

 フォントによって「バックスラッシュ」は、半角円記号に見えます(Windowsのデフォルトのフォントでは、半角円記号に見えます)。

 通常のWindowsでは、キーボードの半角円記号キーを押すと「バックスラッシュ」が入力されます。

本ソフトで使える正規表現

 本ソフトでは「JavaScriptの正規表現」が使えます(正規表現は、プログラミング言語や、利用環境などによって、若干の違いがあります)。

 JavaScriptの正規表現の詳細は「正規表現 - JavaScript | MDN」をご覧下さい。

フラグについて

 正規表現は、文字列の検索に使います。文字列を検索する際、どのように一致させるかを制御するのが「フラグ」です。

 JavaScriptの多くの環境で使えるフラグは3種類あります。それぞれをオン/オフすると、検索の挙動が変わります。

「g」フラグ

 global。グローバル サーチ。

 このフラグをオンにすると、複数の検索結果を得ることができます。まとめて検索したい場合は、このフラグをオンにします。

オフの場合 1件だけ検索。
オンの場合 存在するだけ複数検索。

「i」フラグ

 ignoreCase。大文字・小文字を区別しない検索。

 このフラグをオンにすると、英文字の大文字小文字を区別しなくなります。大文字小文字を無視して一致させたい場合は、このフラグをオンにします。

オフの場合 大文字小文字を区別する。
オンの場合 大文字小文字を区別しない。

「m」フラグ

 multiline。複数行検索。

 このフラグは、検索時の、先頭や末尾の扱いを変えます。

先頭を表すメタキャラクタ「^」 末尾を表すメタキャラクタ「$」
オフの場合 文章全体の先頭を表す。 文章全体の末尾を表す。
オンの場合 行の先頭を表す。 行の末尾を表す。

簡単な正規表現

 小説推敲時の検索に使える、簡単な正規表現の例を示します。

 「|」は、ORです。

正規表現の記述 一致する文字列
男性|女性 男性あるいは女性。
男|雄|男性|男子|少年 男、雄、男性、男子、少年、のいずれか。

 「(~)」は、グループ化です。

正規表現の記述 一致する文字列
(男|女)性 男性あるいは女性。
(私|あなた)(は|が) 私は、私が、あなたは、あなたが、のいずれか。

 「.」は、任意の1文字です。改行は含みません。

正規表現の記述 一致する文字列
第.回 第一回、第二回など。第十一回は、「十一」が2文字なので一致しない。
第..回 第十一回、第十二回など。第一回は、「一」が1文字なので一致しない(「..」で2文字)。

 「[~]」は、いずれか一文字です。「[^~]」は、「~」以外のいずれか一文字です。

正規表現の記述 一致する文字列
[一二三四五]回 一回、二回、三回、四回、五回、のいずれか。
[^八九十]回 一回、二回、七回などは一致するが、八回、九回、十回は一致しない。

 「*」は0回以上の繰り返し、「+」は1回以上の繰り返しです。「{n}」はn回の繰り返し、「{n,m}」はn~m回の繰り返しです。

正規表現の記述 一致する文字列
二[一二三四五六七八九〇]{3}年 二〇〇〇年、から、二九九九年、のいずれか。
(オラ)+! オラ!、オラオラ!、オラオラオラ!、……。

 「\n」は改行文字、「\t」はタブ文字です。「\s」はスペース、タブ、改行などです。「\S」は「\s」以外の文字です。

正規表現の記述 一致する文字列
[^。]\n 「。」以外の後に、改行が来ている場所です。
[\s\S] 改行を含む、任意の1文字です。

 「^」は先頭、「$」は末尾です。以下、「m」フラグがオンの場合(行頭に「^」、行末に「$」が一致)の例です。

正規表現の記述 一致する文字列
^[^ ] 全角スペース以外で行が始まっている場所です。
[^。]$ 「。」以外で行が終わっている場所です。