単語の境界と特殊文字による予期しない結果
通常の文字と特殊文字の両方を含むフレーズの存在を照合しようとすると、ユーザーは次のような問題を引き起こす可能性があります。予期せぬ結果に遭遇する。 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 サイトの他の関連記事を参照してください。