Python3:正規表現でマッチした文字列を抽出・置換したい!

Python3:正規表現でマッチした文字列を抽出・置換したい!

python3 で、正規表現でマッチした文字列を抽出したり、置換したりしたい時があると思いますが、その方法をまとめました。

※ 検証は、python 3.6.5 で行いました。

まず、特定のパターンが含まれているか調べたい

そもそもとして、特定のパターンが含まれているか調べる方法を紹介します。
こちらは、search 関数 を使うことで、調べることができます。
例として、image-123.jpg という文字列の最後に、.jpg が含まれているかどうかを調べてみます。

search 関数自体は、マッチした場合は match オブジェクトを返し、マッチしなかった場合は None を返します。
したがって、マッチしたかどうかは、単純に if文 で判断することができます。

 

特定のパターンにマッチした部分を抽出したい

そしてこちらも、search 関数 を使うことで、抽出することができます。
例として、image-123.jpg という文字列から、123jpg の部分を抽出してみます。
ポイントは、抽出したい部分を小かっこで囲む ことと、groups() 関数を使う ことです。

 

特定のパターンにマッチした部分を置換したい

こちらは、sub 関数 を使うことで、置換することができます。
例として、image-123.jpg という文字列の、123 を 456 に置換してみます。

 

まとめ・補足

python の正規表現には、match や fullmatch という、同じような関数も存在しますが、
基本的にはsearch で代用できるので、search 関数を使いこなせるようにするのが一つのポイントかと思っています。