Pythonの正規表現パターン一覧|構文と使い方を徹底解説
Pythonの正規表現パターンとは
Pythonの正規表現では、制御文字(+ ? . * ^ $ ( ) [ ] { } | \)を除くすべての文字は、その文字自身に一致します。これらの特殊な意味を持つ制御文字(メタ文字)をリテラルとして扱いたい場合は、直前にバックスラッシュ(\)を付けてエスケープします。
この記事では、Pythonで利用できる正規表現の構文を一覧形式でわかりやすく解説します。パターンの書き方に迷ったときのリファレンスとしてご活用ください。
Pythonで使える正規表現の構文一覧
| 番号 | パターン | 説明 |
|---|---|---|
| 1 | ^ | 行の先頭に一致します。 |
| 2 | $ | 行の末尾に一致します。 |
| 3 | . | 改行以外の任意の1文字に一致します。mオプション(re.MULTILINE)を使用すると、改行にも一致させることができます。 |
| 4 | [...] | 角括弧内のいずれか1文字に一致します。 |
| 5 | [^...] | 角括弧内に含まれない任意の1文字に一致します。 |
| 6 | re* | 直前の表現の0回以上の繰り返しに一致します。 |
| 7 | re+ | 直前の表現の1回以上の繰り返しに一致します。 |
| 8 | re? | 直前の表現の0回または1回の出現に一致します。 |
| 9 | re{ n} | 直前の表現がちょうどn回出現する場合に一致します。 |
| 10 | re{ n} | 直前の表現がn回以上出現する場合に一致します。 |
| 11 | re{ n, m} | 直前の表現がn回以上m回以下出現する場合に一致します。 |
| 12 | a| b | aまたはbのいずれかに一致します。 |
| 13 | (re) | 正規表現をグループ化し、マッチしたテキストを記憶します(キャプチャグループ)。 |
| 14 | (?imx) | 正規表現内でi、m、xオプションを一時的に有効にします。括弧内に記述した場合、その範囲のみに影響します。 |
| 15 | (?-imx) | 正規表現内でi、m、xオプションを一時的に無効にします。括弧内に記述した場合、その範囲のみに影響します。 |
| 16 | (?: re) | マッチしたテキストを記憶せずに正規表現をグループ化します(非キャプチャグループ)。 |
| 17 | (?imx: re) | 括弧内でi、m、xオプションを一時的に有効にします。 |
| 18 | (?-imx: re) | 括弧内でi、m、xオプションを一時的に無効にします。 |
| 19 | (?#...) | コメントです。マッチングには影響しません。 |
| 20 | (?= re) | パターンを使って位置を指定します(肯定の先読み)。幅は持ちません。 |
| 21 | (?! re) | パターンの否定を使って位置を指定します(否定の先読み)。幅は持ちません。 |
| 22 | (?> re) | バックトラックしない独立したパターンとして一致させます(絶対最大量指定子)。 |
| 23 | \w | 単語を構成する文字(英数字・アンダースコアなど)に一致します。 |
| 24 | \W | 単語を構成しない文字に一致します。 |
| 25 | \s | 空白文字に一致します。[\t\n\r\f]と同等です。 |
| 26 | \S | 空白以外の文字に一致します。 |
| 27 | \d | 数字に一致します。[0-9]と同等です。 |
| 28 | \D | 数字以外の文字に一致します。 |
| 29 | \A | 文字列の先頭に一致します。 |
| 30 | \Z | 文字列の末尾に一致します。改行が存在する場合は、その改行の直前に一致します。 |
| 31 | \z | 文字列の末尾に一致します。 |
| 32 | \G | 最後にマッチが終了した位置に一致します。 |
| 33 | \b | 角括弧の外では単語境界に一致します。角括弧の中ではバックスペース(0x08)に一致します。 |
| 34 | \B | 単語境界以外の位置に一致します。 |
| 35 | \n, \t など | 改行、キャリッジリターン、タブなどの制御文字に一致します。 |
| 36 | \1...\9 | n番目のグループ化された部分表現に一致します(後方参照)。 |
| 37 | \10 | n番目のグループがすでにマッチしている場合は、そのグループに一致します。それ以外の場合は、文字コードの8進数表現を参照します。 |
正規表現を使う際のポイント
Pythonで正規表現を扱うには、標準ライブラリのreモジュールを使用します。パターン文字列にはraw文字列(r"...")を使うと、バックスラッシュのエスケープ処理が二重になるのを防げるため推奨されています。
また、量指定子(*、+など)はデフォルトで貪欲(greedy)に動作し、できるだけ長い文字列に一致しようとします。最短一致にしたい場合は、*?や+?のように「?」を組み合わせてください。
これらのパターンを組み合わせることで、文字列の検索・置換・抽出などを柔軟かつ効率的に行うことができます。まずは基本のメタ文字から覚え、必要に応じて高度な構文(先読みやグループ化など)を活用していくとよいでしょう。
-
【初心者向け】Python正規表現のグループ化の仕組みと使い方を徹底解説
グループ化とは正規表現における「グループ化」とは、パターンの一部を丸括弧 () で囲むことです。これにより、単一の文字だけでなく、グループ全体に対して量指定子(*、+ など)や各種演算子を適用できるようになります。キャプチャグループと後方参照丸括弧には、部分式をひとまとめにする役割に加えて、「キャプチャグループ」を作成する働きもあります。グループ化された部分がマッチした文字列は「後方参照(バックリファレンス)」として保存され、あとから再利用することが可能です。実際の開発では、2つ以上の候補のどれかにマッチする正規表現が必要になる場面が多くあります。また、量指定子を複数の式全体に適用したいケース
-
Pythonの正規表現とは?基本の考え方と主な使い方をわかりやすく解説
正規表現とは何か 正規表現(Regular Expression)とは、文字列の中から特定のパターンを検索したり置換したりするために用いられる、文字の並び(パターン)のことです。シンプルに言えば、「文字列の中から目的のパターンを見つけ出し、必要に応じて書き換えるための記法」と理解するとよいでしょう。 正規表現はPythonだけでなく、Perl、R、Javaなど、ほとんどのプログラミング言語でサポートされており、テキスト処理における共通の基礎技術となっています。 正規表現が活躍する場面 正規表現は、ソースコード、ログファイル、スプレッドシート、さらにはドキュメントといったテキストデータから情報