Python での部分文字列のすべての出現の検索
Python では、string.find() と string.rfind() を使用できます。より大きな文字列内の部分文字列のインデックスを取得するメソッド。ただし、出現する部分文字列をすべて返すように特別に設計された組み込み関数はありません。
正規表現の使用
複数の部分文字列を検索するためのより強力なアプローチ
import re # Sample string string = "test test test test" # Find all occurrences of "test" matches = [m.start() for m in re.finditer('test', string)] print(matches) # Output: [0, 5, 10, 15]
re.finditer は、個々の一致オブジェクトを生成するジェネレーターを生成します。各一致オブジェクトは、一致する部分文字列の開始インデックスを提供します。
重複する一致の考慮
デフォルトでは、re.finditer は重複しない一致を検索します。重複する一致を見つけるには、肯定的な先読みを使用します。
matches = [m.start() for m in re.finditer('(?=tt)', 'ttt')] print(matches) # Output: [0, 1]
式 (?=tt) は、部分文字列 "tt" が現在の位置に現れるが、それを消費しないと主張します。
重複しないすべてを逆検索
一致を重複させずに逆検索を実行するには、以下を組み合わせます。正および負の先読み:
search = 'tt' matches = [m.start() for m in re.finditer('(?=%s)(?!.{1,%d}%s)' % (search, len(search)-1, search), 'ttt')] print(matches) # Output: [1]
この式により、「tt」はカーソルの直後に表示されますが、逆方向の特定のルックバック範囲 (len(search)-1) 内には表示されません。
以上がPython で出現する部分文字列をすべて見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。