Pythonの正規表現でfinditerを使用する。

スポンサーリンク

finditer()を使って正規表現をforループで回す

  • re.finditer()メソッドに(検索に使う文字列,  検索する文字列)を渡すと反復処理可能な形にできる。
  • ?P<変数名>という形にすると、正規表現を変数にすることも可能

これはちょっとわかりにくいと思います。実際のコードを見てみましょう。

finditer()を使ったPythonコード

import re
name_regex = '(?P<first_name>[A-Z]\w+) (?P<last_neme>[A-Z]\w+)'
names = 'Barack Obama, Ronald Reaga, Nanyc Drew'
for name in re.finditer(name_regex, names):
 print('Meet {}!'.format(name.group('first_name')))

[A-Z]\w+という意味がわからないことにははじまりませんが、first_nameというものを変数にしています。正規表現は非常に説明が難しいです。ここではfinditer()で反復処理可能な形にできることを紹介したかったです。

スポンサーリンク

「貪欲マッチ」と「非貪欲マッチ」

正規表現の考え方で「貪欲マッチ」と「非貪欲マッチ」というものがあります。それぞれの特徴は下記のとおりです。

「貪欲マッチ」貪欲マッチはマッチしたもの全てを見つけてきます。finditer()はこれに該当します。
「非貪欲マッチ」マッチした先頭の要素を返します。match()メソッドがこれに該当します。

話は変わりますがname_regex = ‘( ) ( )’という形でかっこがあります。これが正規表現のグループです。matchは先頭要素があったらそれだけ返しますが、同時にgroupも返します。ここではコードを書いていませんが、注意すべき点です。

正規表現を学ぶのに役立つリンク集

人に紹介できるほどの知識ではありませんが、よろしければどうぞ。

コメント

タイトルとURLをコピーしました