Pythonのパターン一覧表 | 文字列の操作 | Python本格超入門

現在作成中です。今後加筆修正してまいります。
スポンサーリンク
スポンサーリンク

Pythonの正規表現パターン一覧表

正規表現 説明
^ 行の先頭に一致 ^abc は “abc” で始まる文字列に一致
$ 行の末尾に一致 abc$ は “abc” で終わる文字列に一致
. 任意の1文字(改行除く)に一致 a.b は “a” と “b” の間に任意の文字がある文字列に一致
* 直前の要素の0回以上の繰り返し ab*c は “ac”, “abc”, “abbc” に一致
+ 直前の要素の1回以上の繰り返し ab+c は “abc”, “abbc” に一致
? 直前の要素が0回または1回 ab?c は “ac”, “abc” に一致
[] 文字クラス、指定した文字のいずれかに一致 [abc] は “a”, “b”, “c” のいずれかに一致
[^] 文字クラス、指定した文字以外に一致 [^abc] は “a”, “b”, “c” 以外に一致
() グループ化、キャプチャ (abc) は “abc” に一致し、キャプチャされる
| OR (または) に一致 a|b は “a” または “b” に一致
\d 数字 (0-9) に一致 \d は “0” から “9” に一致
\D 数字以外に一致 \D は数字以外に一致
\w 英数字またはアンダースコアに一致 \w は “a-zA-Z0-9_” に一致
\W 英数字またはアンダースコア以外に一致 \W はそれ以外に一致
\s 空白文字に一致 \s はスペース、タブ、改行などの空白に一致
\S 空白以外に一致 \S は空白文字以外に一致
\b 単語境界に一致 \bword\b は “word” の単語境界に一致
\B 単語境界以外に一致 \Bword\B は “word” の単語境界外に一致
{n} n回繰り返す a{3} は “aaa” に一致
{n,} n回以上繰り返す a{2,} は “aa”, “aaa”, “aaaa” に一致
{n,m} n回からm回まで繰り返す a{2,4} は “aa”, “aaa”, “aaaa” に一致
(?=...) ポジティブの先読み a(?=b) は “a” の後に “b” がある場合に一致
(?!...) ネガティブの先読み a(?!b) は “a” の後に “b” がない場合に一致
(?<=...) ポジティブの後読み (?<=a)b は "a" の後にある "b" に一致
(? ネガティブの後読み (? は "a" の後にない "b" に一致
\ 特殊文字のエスケープ \. は "." という文字に一致

Pythonにおける正規表現の使い方

Pythonでは、正規表現を使用して文字列のパターンをマッチさせることができます。Pythonの標準ライブラリにはreモジュールが含まれており、正規表現操作が簡単に行えます。

基本的な例


import re

# リテラル形式
pattern = r'abc'
string = 'abcde'
result = re.search(pattern, string)
print(result is not None)  # True

修飾子

Pythonの正規表現には、以下のフラグ(修飾子)を付けることができます。

  • re.IGNORECASE (i): 大文字と小文字を区別しない検索
  • re.MULTILINE (m): 複数行にまたがる検索
  • re.DOTALL (s): . に改行も含める
  • re.UNICODE (u): Unicodeモードでの検索(Pythonはデフォルトで対応)
  • re.VERBOSE (x): 正規表現内にコメントを許可

特定のパターンの例

次に、いくつかのよく使われるパターンの例を紹介します。

Emailアドレスの検証


email_regex = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
print(re.match(email_regex, "example@example.com") is not None)  # True

URLの検証


url_regex = r'^(https?:\/\/)?([\w\d\-]+\.)+\w{2,}(\/.*)?$'
print(re.match(url_regex, "https://example.com") is not None)  # True

電話番号の検証(日本形式)


phone_regex = r'^\d{2,4}-\d{2,4}-\d{4}$'
print(re.match(phone_regex, "090-1234-5678") is not None)  # True

まとめ

Pythonの正規表現は、パターンマッチングや文字列の検索・置換に非常に便利です。reモジュールを使用して、多様なパターンにマッチさせることが可能です。表にまとめたパターンや具体的な使用例を参考に、正規表現を効果的に活用しましょう。