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

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

Linda Hamilton
リリース: 2024-12-22 00:53:38
オリジナル
831 人が閲覧しました

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

部分文字列のすべての出現箇所の検索

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

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