Pythonにおける正規表現入門
正規表現は、複雑な検索と置換(あるいは単なる検索)のためのコマンドです。非常に興味深いことを可能にしますが、残念ながら習得はかなり難しいものです。
Pythonで正規表現を使い始めるには、特別なモジュール re をインポートする必要があります。
import re
モジュール re には、正規表現を扱うためのメソッドが含まれています。正規表現はコマンドの集合であり、2種類の文字で構成されます。すなわち、それ自身を表す文字と、特殊文字と呼ばれるコマンド文字です。
正規表現の入門として、文字列内の置換に使用される sub メソッドの例から始めるのがよいでしょう。このメソッドは、最初のパラメータで何を置換するか、2番目のパラメータで何に置換するかを受け取ります。3番目のパラメータで置換を行う文字列を指定します。4番目のオプションパラメータで、置換回数を指定できます。このメソッドを使った最も単純な置換は次のようになります。
res = re.sub('a', '!', 'bab')
print(res) # 出力は 'b!b'
お気づきのように、正規表現では文字はそれ自身を表します。数字についても同様です。数字 2 を ! に置き換えてみましょう。
res = re.sub('2', '!', '12abc3')
print(res) # 出力は '1!abc3'
一方、ピリオドは特殊文字であり、任意の1文字を表します。次の例では、文字 'x'、次に任意の文字、そして再び文字 'x' というパターンに一致する部分文字列を見つけてみましょう。
res = re.sub('x.x', '!', 'xax eee')
print(res) # 出力は '! eee'
次の文字列があります。
txt = 'ahb acb aeb aeeb adcb axeb'
パターン 文字 'a'、任意の文字、文字 'b' に従って、文字列 'ahb'、'acb'、'aeb' を見つける正規表現を書いてください。
次の文字列があります。
txt = 'aba aca aea abba adca abea'
パターン 文字 'a'、2 文字の任意の文字、文字 'a' に従って、文字列 'abba'、'adca'、'abea' を見つける正規表現を書いてください。
次の文字列があります。
txt = 'aba aca aea abba adca abea'
'adca' を捕捉せずに、'abba' と 'abea' を見つける正規表現を書いてください。