Python の単語境界と特殊文字
Python 正規表現で単語境界マッチングに b パターンを使用すると、次の場合に予期しない結果が発生する可能性があります。検索パターンには括弧や中括弧などの特殊文字が含まれています。
具体的には、 b は単語の境界でのみ一致します。文字は単語文字 (英数字またはアンダースコア) です。これは、たとえば、bSortesindex[persons]{Sortes} は、Sortes の後に特殊文字 (}index) があるため、テスト Sortesindex[persons]{Sortes} テキストと一致しないことを意味します。
適切に一致する場合は、次の解決策を検討してください:
アダプティブ ワード境界:
文字列の先頭または末尾、または単語文字ステータスが異なる文字間で一致する適応型単語境界を使用します:
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')
非 Word を明示的に処理する境界:
W または $ を使用して単語以外の境界を明示的に処理します。たとえば、
re.search(r'\b' + re.escape('Sortes\index[persons]{Sortes}') + '(\W|$)', 'test Sortes\index[persons]{Sortes} test')
さらに、単語の境界を定義する際の柔軟性を高めるために、否定的なルックアラウンドの使用を検討してください。たとえば、単語文字が現在の位置の直前にある場合、(?
以上がPython の単語境界を使用して文字列と特殊文字を確実に一致させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。