正規表現を学ぶとよくあるつまずきポイントと対策をまとめました。
⚠️ つまずきポイント&対策
1
「バックスラッシュのエスケープが混乱する」
正規表現では
正規表現では
\d のように \ を使います。Python文字列でも \ が特別な意味を持つため、
r"\d+" のように raw文字列(先頭に r) を使うと二重エスケープが不要になって読みやすくなります。
2
「re.search() の戻り値が None でエラーになる」
マッチしない場合
マッチしない場合
re.search() は None を返します。
None に対して .group() を呼ぶと AttributeError になります。
必ず if m: でチェックしてから使いましょう。
3
「. (ドット) が期待通りに動かない」
文字としての「.」(ピリオド)にマッチしたい場合は
. は任意の1文字(改行以外)にマッチします。文字としての「.」(ピリオド)にマッチしたい場合は
\. とエスケープが必要です。
4
「量指定子が貪欲にマッチして困る」
+ や * はデフォルトで貪欲(できるだけ長くマッチ)です。
+? や *? にすると非貪欲(できるだけ短くマッチ)になります。
HTML タグの抽出などで重要です。
5
「findall でグループが複数あると結果がタプルになる」
re.findall() はグループが1つなら文字列リスト、複数ならタプルのリストを返します。
グループが不要なら (?:...) の非キャプチャグループを使いましょう。