正規表現
とりあえず備忘録でpythonでの正規表現でちょっと困ったところのメモ.
まずは、
import re #reモジュールのインポート
- 正規表現を何回も用いるときは、
regex = re.compile(pattern) #patternは正規表現
を用いると早くなる。
コンパイルせずに使うと重くなるので、癖にした方がいいかな。
正規表現(pattern→regex)にマッチするものを文章(text)から取り出して、使う。
1.regex.match(text) :textの'先頭'にpatternにマッチするものがあればそれを返す。 2.regex.search(text) :textの'どこか'にpatternにマッチするものがあればそれを返す。 3.regex.findall(text) :textのpatternにマッチする部分を全てリストに入れて返す。 4.regex.finditer(text) :text内のpatternにマッチする部分を繰り返しとって返す。
これらを例えば m = (上の1~4のどれか) としておくと、m.group()で取り出せる。
この時、その引数に空 or 0とするとマッチするところを全部まとめて返してくれる。
引数に1以上を入れるとマッチするところを順番に返せる。はず。よくわからんかった。
別解
scanner = regex.scanner(text) m = scanner.search() while m: print m.group(0) m = scanner.search()
とすれば順番に返すことが出来る、みたい。
でもこれは自分でやった範囲では
for m in regex.finditer(text): print m.group(0)
と同じだった。