正規表現パターン
JSPCRE
//
マッチ結果
マッチなし文字クラス
| 構文 | 意味 | JS | PCRE | Python | Java |
|---|---|---|---|---|---|
| \d | 数字 [0-9] | ✅ | ✅ | ✅ | ✅ |
| \D | 非数字 [^0-9] | ✅ | ✅ | ✅ | ✅ |
| \w | 単語文字 [a-zA-Z0-9_] | ✅ | ✅ | ✅ | ✅ |
| \W | 非単語文字 | ✅ | ✅ | ✅ | ✅ |
| \s | 空白文字 | ✅ | ✅ | ✅ | ✅ |
| \S | 非空白文字 | ✅ | ✅ | ✅ | ✅ |
| . | 任意の文字(改行除く) | ✅ | ✅ | ✅ | ✅ |
| [abc] | 文字クラス(a/b/cにマッチ) | ✅ | ✅ | ✅ | ✅ |
| [^abc] | 否定クラス(a/b/c以外) | ✅ | ✅ | ✅ | ✅ |
| [[:alpha:]] | POSIX英字クラス | ❌ | ✅ | ✅ | ❌ |
| [[:digit:]] | POSIX数字クラス | ❌ | ✅ | ✅ | ❌ |
| \p{L} | Unicode文字 | ✅ | ✅ | ⚠️ | ✅ |
| \p{N} | Unicode数字 | ✅ | ✅ | ⚠️ | ✅ |
| \X | Unicode拡張書記素クラスタ | ❌ | ✅ | ❌ | ❌ |
量指定子
| 構文 | 意味 | JS | PCRE | Python | Java |
|---|---|---|---|---|---|
| * | 0回以上 | ✅ | ✅ | ✅ | ✅ |
| + | 1回以上 | ✅ | ✅ | ✅ | ✅ |
| ? | 0回または1回 | ✅ | ✅ | ✅ | ✅ |
| {n} | ちょうどn回 | ✅ | ✅ | ✅ | ✅ |
| {n,m} | n回からm回 | ✅ | ✅ | ✅ | ✅ |
| *? | 0回以上(怠惰) | ✅ | ✅ | ✅ | ✅ |
| +? | 1回以上(怠惰) | ✅ | ✅ | ✅ | ✅ |
| ?? | 0回または1回(怠惰) | ✅ | ✅ | ✅ | ✅ |
| {n,m}? | n回からm回(怠惰) | ✅ | ✅ | ✅ | ✅ |
| *+ | 0回以上(占有) | ❌ | ✅ | ❌ | ✅ |
| ++ | 1回以上(占有) | ❌ | ✅ | ❌ | ✅ |
| ?+ | 0回または1回(占有) | ❌ | ✅ | ❌ | ✅ |
アンカー
| 構文 | 意味 | JS | PCRE | Python | Java |
|---|---|---|---|---|---|
| ^ | 文字列の先頭(マルチラインでは行頭) | ✅ | ✅ | ✅ | ✅ |
| $ | 文字列の末尾(マルチラインでは行末) | ✅ | ✅ | ✅ | ✅ |
| \b | 単語境界 | ✅ | ✅ | ✅ | ✅ |
| \B | 非単語境界 | ✅ | ✅ | ✅ | ✅ |
| \A | 文字列の絶対先頭 | ❌ | ✅ | ✅ | ✅ |
| \Z | 文字列の絶対末尾(改行前) | ❌ | ✅ | ✅ | ✅ |
| \z | 文字列の最終末尾(改行後) | ❌ | ✅ | ✅ | ❌ |
| \G | 前回マッチの終了位置 | ❌ | ✅ | ✅ | ✅ |
グループと参照
| 構文 | 意味 | JS | PCRE | Python | Java |
|---|---|---|---|---|---|
| (...) | キャプチャグループ | ✅ | ✅ | ✅ | ✅ |
| (?:...) | 非キャプチャグループ | ✅ | ✅ | ✅ | ✅ |
| (?<name>...) | 名前付きグループ(JS/Java形式) | ✅ | ⚠️ | ✅ | ✅ |
| (?P<name>...) | 名前付きグループ(Python形式) | ❌ | ✅ | ✅ | ❌ |
| \1 | グループNへの後方参照 | ✅ | ✅ | ✅ | ✅ |
| $1 | 置換でのグループN参照 | ✅ | ❌ | ❌ | ✅ |
| \k<name> | 名前付き後方参照 | ✅ | ✅ | ✅ | ✅ |
| (?|...) | 分岐リセットグループ | ❌ | ✅ | ❌ | ❌ |
| (?>...) | アトミックグループ(バックトラックなし) | ❌ | ✅ | ❌ | ✅ |
先読み・後読み
| 構文 | 意味 | JS | PCRE | Python | Java |
|---|---|---|---|---|---|
| (?=...) | 肯定先読み | ✅ | ✅ | ✅ | ✅ |
| (?!...) | 否定先読み | ✅ | ✅ | ✅ | ✅ |
| (?<=...) | 肯定後読み | ✅ | ✅ | ✅ | ✅ |
| (?<!...) | 否定後読み | ✅ | ✅ | ✅ | ✅ |
修飾子
| 構文 | 意味 | JS | PCRE | Python | Java |
|---|---|---|---|---|---|
| (?i) | 大文字小文字を区別しない | ✅ | ✅ | ✅ | ✅ |
| (?-i) | 大文字小文字を区別する | ❌ | ✅ | ❌ | ⚠️ |
| (?m) | マルチライン(^/$が行頭・行末にマッチ) | ✅ | ✅ | ✅ | ✅ |
| (?s) | ドット全マッチ(.が改行にマッチ) | ✅ | ✅ | ⚠️ | ✅ |
| (?x) | 拡張モード(空白と#コメントを無視) | ❌ | ✅ | ✅ | ✅ |
| (?i:...) | インライン大文字小文字区別なし | ✅ | ✅ | ❌ | ✅ |
PCRE高度機能
| 構文 | 意味 | JS | PCRE | Python | Java |
|---|---|---|---|---|---|
| \K | マッチ開始位置をリセット | ❌ | ✅ | ❌ | ❌ |
| (*SKIP) | 現在のマッチをスキップ | ❌ | ✅ | ❌ | ❌ |
| (*FAIL) | マッチを強制的に失敗 | ❌ | ✅ | ❌ | ❌ |
| (?(cond)yes|no) | 条件式 | ❌ | ✅ | ❌ | ❌ |
| (?R) | パターン全体の再帰 | ❌ | ✅ | ❌ | ❌ |
| (?1) | グループ1へのサブルーチン呼び出し | ❌ | ✅ | ❌ | ❌ |