ホームページ > バックエンド開発 > Python チュートリアル > Python で出現する部分文字列をすべて見つけるにはどうすればよいですか?

Python で出現する部分文字列をすべて見つけるにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-12 21:58:10
オリジナル
929 人が閲覧しました

How Can I Find All Occurrences of a Substring in Python?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート