101 of 151 menu

reモジュールのfinditerメソッド

モジュール refinditer メソッドは、 文字列内の 正規表現 に一致する全てのイテレーターを返します。 メソッドの最初のパラメータには正規表現を指定します。 第二パラメータには、正規表現を検索する文字列を指定します。 第三のオプションパラメータでは フラグ を指定できます。 このメソッドは、左から右に向かって全ての一致を検索し、確認します。

構文

import re re.finditer(正規表現, 文字列, [フラグ])

文字列内の数字を含む全ての部分文字列を見つけてみましょう:

txt = 'aaaa 123 bbbb 456' res = re.finditer('\d+', txt) print(res)

コード実行結果:

<callable_iterator object at 0x000002AA891300A0>

次に、前の例で取得したオブジェクトを値とする変数 res を宣言し、 それをループで反復処理してみましょう:

txt = 'aaaa 123 bbbb 456' res = re.finditer('\d+', txt) for el in res: print(el)

コード実行後、2つのMatch objectが得られます:

<re.Match object; span=(5, 8), match='123'> <re.Match object; span=(14, 17), match='456'>

これらのオブジェクトには、タプル形式での正規表現との全ての一致に関する情報が含まれています。 インデックスを使用して、一致した部分を抽出できます:

for el in res: print(el[0])

コード実行結果:

'123' '456'

よりわかりやすくするため、一致を検索する際にグループを使用してみましょう。 そして、ループでオブジェクトを反復処理する際に、最初の一致(これは0番目のグループとみなされます)と、 その要素もそれぞれグループに分けて出力してみましょう:

txt = 'aaaa 123 bbbb 456' res = re.finditer('(\d)(\d)', txt) for el in res: print(el[0], el[1], el[2])

コード実行後、0番目のグループ(つまり部分文字列全体)と、 その部分文字列の最初と2番目の文字が得られます:

'12' '1' '2' '45' '4' '5'

関連項目

  • モジュール re のメソッド findall
    文字列内の全ての一致のリストを返します
  • モジュール re のメソッド search
    文字列内で正規表現に最初に一致するものを検索します
  • モジュール re のメソッド match
    文字列の先頭で正規表現に一致するものを検索します
  • モジュール re のメソッド fullmatch
    文字列内の正規表現に完全に一致するものを検索します
  • モジュール re のオブジェクト Match object
    正規表現との一致に関する情報を含みます
  • モジュール re のメソッド split
    指定された区切り文字で文字列をリストに分割します
日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否