正規表現は、「通常の文字」と、「メタキャラクタ」と呼ばれる特殊な文字を使い、「こんな感じの文字の並び」(文字パターン)を検索するための記述方法です。
「通常の文字」は、「abcdef……」「01234……」「!#%……」「あいう……」「漢字……」などの文字です。
「メタキャラクタ」は、「.」「+」「*」「|」など、様々な記号が用いられます。
こうした「メタキャラクタ」自身を、通常の文字として扱う際は、その前に「\」(バックスラッシュ)を付けて、「\.」「\+」「\*」「\|」とします。「\」自身は「\\」と書きます。
フォントによって「バックスラッシュ」は、半角円記号に見えます(Windowsのデフォルトのフォントでは、半角円記号に見えます)。
通常のWindowsでは、キーボードの半角円記号キーを押すと「バックスラッシュ」が入力されます。
本ソフトでは「JavaScriptの正規表現」が使えます(正規表現は、プログラミング言語や、利用環境などによって、若干の違いがあります)。
JavaScriptの正規表現の詳細は「正規表現 - JavaScript | MDN」をご覧下さい。
正規表現は、文字列の検索に使います。文字列を検索する際、どのように一致させるかを制御するのが「フラグ」です。
JavaScriptの多くの環境で使えるフラグは3種類あります。それぞれをオン/オフすると、検索の挙動が変わります。
global。グローバル サーチ。
このフラグをオンにすると、複数の検索結果を得ることができます。まとめて検索したい場合は、このフラグをオンにします。
オフの場合 | 1件だけ検索。 |
---|---|
オンの場合 | 存在するだけ複数検索。 |
ignoreCase。大文字・小文字を区別しない検索。
このフラグをオンにすると、英文字の大文字小文字を区別しなくなります。大文字小文字を無視して一致させたい場合は、このフラグをオンにします。
オフの場合 | 大文字小文字を区別する。 |
---|---|
オンの場合 | 大文字小文字を区別しない。 |
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」フラグがオンの場合(行頭に「^」、行末に「$」が一致)の例です。
正規表現の記述 | 一致する文字列 |
---|---|
^[^ ] | 全角スペース以外で行が始まっている場所です。 |
[^。]$ | 「。」以外で行が終わっている場所です。 |