Pythonで正規表現

Pythonで正規表現を使って、文字列を検索してみます。

目次

  1. re(正規表現)モジュールで検索をする方法
  2. 正規表現での検索例

re(正規表現)モジュールで検索をする方法

Pythonのreモジュールを使ってみます。

reモジュールにはいくつかメソッドがありますが、検索に使う代表的なものはこの3つではないでしょうか。

m = re.match(pattern, string, flags=0)
m = re.search(pattern, string, flags=0)
L = re.findall(pattern, string, flags=0)
変数 内容
pattern 検索パターン文字列
string 検索対象の文字列
flags モードなどのオプション
m matchオブジェクト
L 文字列のリスト

matchは、検索対象文字列の先頭部分が検索パターンと一致するかどうか調べます。

searchは、検索対象文字列の中で、最初に検索パターンと一致する文字列を調べます。

findallは、検索対象文字列の中で、検索パターンと一致する全ての文字列を調べます。

対象文字列内に検索パターンに一致する文字列が無い場合は、Noneが返されます。

searchやmatchメソッドの戻り値のmatchオブジェクトから検索結果の文字列を取り出したい場合は、groupメソッドを使います。

S = m.group()
S = m.group(0)
変数 内容
m searchやmatchで得られるmatchオブジェクト
S 文字列

正規表現での検索例

試してみました。

>>> import re
>>> str = "すもももももももものうち"

>>> re.match("すもも", str)
<_sre.SRE_Match object; span=(0, 3), match='すもも'>

>>> re.match("すもも", str).group()
'すもも'

>>> re.match("もも", str)

>>> re.search("もも", str)
<_sre.SRE_Match object; span=(1, 3), match='もも'>

>>> re.search("もも", str).group()
'もも'

>>> re.findall("もも", str)
['もも', 'もも', 'もも', 'もも']

C#はmatchesだったりしたので、ちょっと紛らわしい。

広告

Pythonの文字列処理カテゴリの投稿