正規表現への苦手意識を克服する
正規表現には苦手意識があった。正確には苦手というより憶えるのが面倒臭く、必要になる場面ではそのたびごとにググって調べ、すぐ忘れてしまう、というパターンである。ただ、人生のこのタイミングでがっつりPythonを学習するにあたって、さすがに避けて通れない道である気がするし、本の中でも優しく説明されている(面倒臭がりが本当に多いのだろう)。せっかくなので、この機会に身につけてしまいたい。 正規表現を検証するRegexPalのようなサイトも存在するので、トレーニングとして試してみようと思う。 よく使われる正規表現は以下のとおり。最低限これらは叩き込んでおきたい。
- ():グループ化
- *:直前の文字(文字グループ)0個以上
- +:直前の文字(文字グループ)1個以上
- :内のどれか1文字
- [^]:[]内以外の1文字
- {n}:直前の文字(文字グループ)がn個
- {n,}:直前の文字(文字グループ)がn個以上
- {,n}:直前の文字(文字グループ)が0〜n個
- {m,n}:直前の文字(文字グループ)がm〜n個(貪欲)
- {m,n}?:直前の文字(文字グループ)がm〜n個(非貪欲)
- |:または
- .:改行以外の1文字(ワイルドカード)
- .*:あらゆる文字列(貪欲)
- .*?:あらゆる文字列(非貪欲)
- \:エスケープ文字
- ^:先頭
- $:末尾
- ?:直前の文字(文字グループ)が0個か1個
- \d:0〜9の数字
- \D:0〜9の数字以外
- \w:文字または数字またはアンダーライン
- \W:文字数字アンダーライン以外
- \s:空白文字(スペース・タブ・改行)
- \S:空白文字以外
スクレイピングする際に、「余分なものを除外する」上で正規表現は非常に役立つ。 なお、Pythonで正規表現を使う場合は
import re
として正規表現ライブラリを読み込む必要がある。