Pythonで正規表現
Pythonで正規表現を使って、文字列を検索してみます。
目次
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だったりしたので、ちょっと紛らわしい。
公開日
広告