ホームページ > バックエンド開発 > Python チュートリアル > ユーザー指定の文字列を Python で正規表現パターンとして安全に使用するにはどうすればよいですか?

ユーザー指定の文字列を Python で正規表現パターンとして安全に使用するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-31 00:57:11
オリジナル
806 人が閲覧しました

How Can I Safely Use User-Supplied Strings as Regex Patterns in Python?

ユーザー指定のパターンでの正規表現文字のエスケープ

ユーザー入力を正規表現パターンとして利用する場合、文字の問題に対処することが重要です。正規表現構文内で特別な意味を持ちます。たとえば、「単語」を検索するというユーザーの意図は、括弧が原因で正規表現エンジンによってグループとして誤って解釈されます。これを防ぐには、括弧を正規表現記号ではなくリテラル文字列として扱う必要があります。

従来のアプローチ: 手動置換

これらの文字を手動でエスケープする 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 サイトの他の関連記事を参照してください。

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