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
モジュールを使用して、多様なパターンにマッチさせることが可能です。表にまとめたパターンや具体的な使用例を参考に、正規表現を効果的に活用しましょう。