正規表現マッチ方法
Pythonでの正規表現マッチ方法のメモ
- 1
import re
で正規表現モジュールをインポートする。
- 2
re.compile()
関数を呼び出しRegexオブジェクトを生成する(raw文字列を使う)。
例:phone_num_regex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
- 3 Regexオブジェクトの
search()
メソッドに、検索対象の文字列を渡すと、Matchオブジェクトを返す。
例:mo = phone_num_regex.search('私の電話番号は415-555-4242です。')
mo
はMatching objectの意
- 4 Matchオブジェクトの
group()
メソッドを呼び出し、実際にマッチした文字列を取得する。
例:print('電話番号が見つかりました: ' + mo.group())
→電話番号が見つかりました: 415-555-4242
一般的な文字集合を表す短縮形
短縮形 | 意味 |
---|---|
\d | 0~9の数字 |
\D | 0~9の数字以外 |
\w | 文字、数字、下線(単語wordのw) |
\W | 文字、数字、下線以外 |
\s | スペース、タブ、改行(空白spaceのs) |
\S | スペース、タブ、改行以外 |
正規表現に用いる記号のまとめ
- ?は、直前のグループの0回か1回の出現にマッチする。
- *は、直前のグループの0回以上の出現にマッチする。
- +は、直前のグループの1回以上の出現にマッチする。
- {n}は、直前のグループのn回の出現にマッチする。
- {n,}は、直前のグループのn回以上の出現にマッチする。
- {,m}は、直前のグループの0~m回の出現にマッチする。
- {n,m}は、直前のグループのn~m回の出現にマッチする。
- {n,m}?, *?, +?は、直前のグループの非貪欲マッチを行う。
- ^spamは、「spam」から始まる文字列とマッチする。
- spam$は、「spam」で終わる文字列とマッチする。
- .は、改行文字以外の任意の1文字とマッチする。
- \d, \w, \sは、それぞれ、数字、単語を構成する文字、空白文字にマッチする。
- \D, \W, \Sは、それぞれ、数字、単語を構成する文字、空白文字以外の文字にマッチする。
- [abc]は、角カッコの中の任意の1文字にマッチする。
- [^abc]は、角カッコの文字以外の任意の1文字にマッチする。