ユーザー指定のパターンでの正規表現文字のエスケープ
ユーザー入力を正規表現パターンとして利用する場合、文字の問題に対処することが重要です。正規表現構文内で特別な意味を持ちます。たとえば、「単語」を検索するというユーザーの意図は、括弧が原因で正規表現エンジンによってグループとして誤って解釈されます。これを防ぐには、括弧を正規表現記号ではなくリテラル文字列として扱う必要があります。
従来のアプローチ: 手動置換
これらの文字を手動でエスケープする 1 つの方法は、各インスタンスをエスケープされたバージョンに置き換えます。たとえば、「(s)」を「(s)」に置き換えることができます。ただし、これには考えられるすべての正規表現記号を考慮する必要があり、面倒な作業になる可能性があります。
より良い解決策: re.escape 関数
より効率的な解決策は、Python の re.escape 関数を使用することです。 .escape() 関数。文字列内の英数字以外の文字を自動的にエスケープします。これにより、特殊な正規表現文字をリテラル文字列として扱うことができます。
たとえば、テキスト内の "Word (s)" のインスタンスを検索するには、次を使用できます。
def simplistic_plural(word, text): word_or_plural = re.escape(word) + 's?' return re.match(word_or_plural, text)
この関数は、テキスト内でパターンが見つかった場合に一致オブジェクトを返します。
以上がユーザー指定の文字列を Python で正規表現パターンとして安全に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。