ホームページ > バックエンド開発 > Python チュートリアル > Python の「re」モジュールを使用してフレーズと特殊文字を確実に一致させる方法

Python の「re」モジュールを使用してフレーズと特殊文字を確実に一致させる方法

DDD
リリース: 2024-12-08 02:56:10
オリジナル
644 人が閲覧しました

How to Reliably Match Phrases with Special Characters Using Python's `re` Module?

単語の境界と特殊文字による予期しない結果

通常の文字と特殊文字の両方を含むフレーズの存在を照合しようとすると、ユーザーは次のような問題を引き起こす可能性があります。予期せぬ結果に遭遇する。 Python の re モジュールを使用すると、パターンをエスケープし、指定された文字列内で検索できます。通常、b は単語の境界に一致しますが、パターンに特殊文字が含まれている場合は困難が生じます。

フレーズ「Sortesindex[persons]{Sortes}」の例を考えてみましょう。 re.escape('Sortes\index[persons]{Sortes}') および b を使用して文字列「test Sortesindex[persons]{Sortes} text」内を検索すると、一致するものが見つかりません。これは、b では境界に従う単語文字が必要ですが、特殊文字が存在する場合には当てはまらないために発生します。

これを修正するには、明示的な非単語文字の一致または文字列の終了条件を使用できます。使用済み。 b を (W|$) に置き換えると、検索が成功します。

より包括的なアプローチは、適応型単語境界を使用することです。

re.search(r'(?:(?!\w)|\b(?=\w)){}(?:(?<=\w)\b|(?<!\w))'.format(re.escape('Sortes\index[persons]{Sortes}')), 'test Sortes\index[persons]{Sortes} test')
ログイン後にコピー

適応型単語境界により、単語境界が存在することが保証されます。隣接する単語文字が必要です。これらは、パターンの両側の非単語文字を除外することによって機能します。

代わりに、否定的な参照に基づいた明確な単語境界を利用することもできます。

re.search(r'(?<!\w){}(?!\w)'.format(re.escape('Sortes\index[persons]{Sortes}')), 'test Sortes\index[persons]{Sortes} test')
ログイン後にコピー

否定的な参照は、単語の不在を保証します。

結論として、通常の文字と特殊文字の両方を含むフレーズを照合する場合は、明示的な非単語文字を使用する必要があります。望ましい結果を確実に得るには、マッチング、適応型単語境界、または明確な単語境界を使用する必要があります。

以上がPython の「re」モジュールを使用してフレーズと特殊文字を確実に一致させる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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