部分文字列のすべての出現箇所の検索
Python は、関数 string.find() や string.rfind( など) を含む広範な文字列操作機能を提供します。 ) それぞれ最初と最後から部分文字列の最初の出現を取得します。ただし、これらの関数は、部分文字列のすべての出現を検索しようとすると不十分です。
解決策: 正規表現を利用する
組み込みの「文字列」がない場合.find_all()" 関数を使用すると、正規表現の力を活用できます:
import re text = "test test test test" # Find all occurrences of "test" matches = [m.start() for m in re.finditer('test', text)] # Print the found indexes print(matches) # [0, 5, 10, 15]
このソリューションは反復します。 re.finditer('test', text) の結果を処理します。これは、検出された出現ごとに一致オブジェクトを生成するジェネレーターです。各一致から start() プロパティを抽出することで、元の文字列内の部分文字列の位置を表すインデックスのリストを取得します。
重複する一致の処理
If重複する一致は許可されており、通常のメソッドで先読みアサーションを使用することでキャプチャできます。式:
matches = [m.start() for m in re.finditer('(?=tt)', 'ttt')] # [0, 1]
逆検索の実行
重複せずに逆検索を実行するには、正と負の先読みを組み合わせて使用できます。
search = 'tt' matches = [m.start() for m in re.finditer('(?=%s)(?!.{1,%d}%s)' % (search, len(search)-1, search), 'ttt')] # [1]
正規表現を利用すると、Python で出現するすべての部分文字列を効果的に識別して取得できます。文字列。
以上がPython 文字列内のすべての部分文字列を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。