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

  • このエントリーをはてなブックマークに追加

正規表現もforループで回すことができる

forループを使うためにはfinditer()をつかう

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

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

実際のコード

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')))

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

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

[A-Z]\w+という意味がわからないことにははじまりませんが、first_nameというものを変数にしています。

正規表現は非常に説明が難しいです。ここではfinditer()で反復処理可能な形にできることを紹介したかったです。

正規表現の基礎

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

 
  • このエントリーをはてなブックマークに追加
     

SNSでもご購読できます。

コメントを残す

*

CAPTCHA