正規表現(Regular Expression)のチートシート
以下は、さまざまな言語やツールで使われる正規表現の共通ルールをまとめたものです。
基本的な文字クラス
パターン | 説明 |
---|
. | 任意の1文字(改行を除く) |
\d | 任意の数字(0-9) |
\D | 数字以外の任意の文字 |
\w | 任意の単語構成文字([a-zA-Z0-9_]) |
\W | 単語構成文字以外 |
\s | 任意の空白文字(スペース、タブなど) |
\S | 空白以外の任意の文字 |
特殊文字(エスケープが必要な文字)
文字 | 説明 |
---|
\ | エスケープ文字 |
^ | 行の先頭を示す |
$ | 行の末尾を示す |
* | 0回以上の繰り返し |
+ | 1回以上の繰り返し |
? | 0回または1回の出現 |
{n} | n回の繰り返し |
{n,} | n回以上の繰り返し |
{n,m} | n回以上m回以下の繰り返し |
` | ` |
( ) | グループ化 |
[ ] | 文字クラスを定義 |
- | 範囲を指定(例: [a-z] ) |
アンカー(位置指定)
パターン | 説明 |
---|
^ | 行の先頭 |
$ | 行の末尾 |
\b | 単語境界 |
\B | 非単語境界 |
(?=...) | ポジティブの先読み |
(?!...) | ネガティブの先読み |
(?<=...) | ポジティブの後読み |
(?<!...) | ネガティブの後読み |
応用例
パターン | 説明 |
---|
\d{3}-\d{4} | 日本の郵便番号(例: 123-4567) |
[a-zA-Z]+ | 英単語(1文字以上) |
^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$ | Eメールアドレスの検証 |
`(http | https)://\S+` |
\b\d{10,}\b | 10桁以上の数字を検出 |
フラグ(オプション)
フラグ | 説明 |
---|
i | 大文字小文字を区別しない |
g | グローバルマッチ(すべて一致させる) |
m | 複数行モード |
s | ドットが改行文字にも一致する |
高度なパターン
パターン | 説明 |
---|
(?>...) | 独立型グループ(バックトラックを無効化) |
(?:...) | 非キャプチャグループ(結果に含めないグループ化) |
\G | 直前のマッチ位置(連続したマッチに使用) |
[^\r\n] | 改行を含まない任意の文字 |
[^\0] | NULL文字以外の任意の文字 |
Unicodeに関連する表現
パターン | 説明 |
---|
\p{L} | 任意の文字(Unicodeでの「文字」クラス) |
\p{N} | 任意の数字 |
\p{Z} | 任意のスペース |
\P{L} | 文字以外(大文字のPで否定) |
\X | 任意のUnicode拡張グラフ(合成文字などを含む) |
特殊なシーケンス
シーケンス | 説明 |
---|
(?<name>...) | 名前付きキャプチャグループ(例: (?<year>\d{4}) ) |
\k<name> | 名前付きキャプチャグループの参照(例: \k<year> ) |
(?#...) | コメント(正規表現内で無視されるテキスト) |
`(? | …)` |
バックリファレンス(後方参照)
パターン | 説明 |
---|
(.)\1 | 同じ文字が2回続く(例: aa ) |
(.+)\1 | 繰り返されるパターン(例: abcabc ) |
(?<name>.+)\k<name> | 名前付き後方参照 |
制御文字
シーケンス | 説明 |
---|
\t | タブ |
\n | 改行 |
\r | キャリッジリターン |
\f | フォームフィード |
\v | 垂直タブ |
よくあるユースケース
数値関連
パターン | 説明 |
---|
^-?\d+(\.\d+)?$ | 正負を含む整数や小数(例: -123.45 ) |
\b[1-9][0-9]{2,}\b | 3桁以上の自然数 |
日付・時刻
パターン | 説明 |
---|
`\b\d{4}-(0[1-9] | 1[0-2])-(0[1-9] |
HTMLタグ
パターン | 説明 |
---|
<[a-zA-Z]+[^>]*> | 任意の開始タグ |
</[a-zA-Z]+> | 任意の終了タグ |
<([a-zA-Z]+)[^>]*>.*?</\1> | 開始・終了タグが一致するHTML要素 |
正規表現ツールの違い
正規表現は、使用する環境やツール(Python, JavaScript, Java, grepなど)によって細かい仕様が異なる場合があります。以下は主な違いです:
特徴 | Python | JavaScript | grep |
---|
名前付きグループ | (?P<name>...) | (?<name>...) | サポートなし |
Lookbehind | サポート | 部分サポート | サポートなし |
Unicode対応 | サポート | サポート | 一部制限あり |