質問: r.finditer(S) if result: for m in result: print(m) ``` ``` ``` "aa"がマッチしている箇所は3つあり、私の予想では下記の実行結果が返ってくると考えました。 実際の出力は違うようです。 どなたかこの挙動について解説をお願いできないでしょうか。 恐れ入りますがどうぞよろしくお願いいたします。
回答: この辺が参考になるのかなと。 先読み/後読みアサーションで重複マッチング - Qiita ところでアサーションの説明として「文字が消費されない」といった説明が良くなされます。それはまあ間違っていないとは思うのですが、この説明だけをうのみにしていると、今一つイメージが難しく、なかなか使い物になる正規表現を組むことができません。私はさっぱり使いこなすことができず、何年もアサーションを避けて通っていました。 アサーション→マッチする対象は「位置」であって「文字」ではない。 というあるサイトでの文言をよんで、私の中の各種の疑問が氷解し、できることが一気に増えました。ご参考まで。