進数 - python 正規表現 記号




Pythonで正規表現文字列をエスケープする (3)

いくつかのテキストを検索するための正規表現パターンとして、ユーザーからの入力を使用したいと思います。 それは動作しますが、ユーザーが正規表現で意味を持つ文字を置くケースをどう処理することができますか? たとえば、ユーザーがWord (s)を検索したいとします。正規表現エンジンは、グループとして(s)を取ります。 私はそれを文字列"(s)"ように扱いたい。 私はユーザーの入力にreplaceて実行することができます( \() \(置き換えますが、問題はすべての可能な正規表現のシンボルの置換を行う必要があります。 あなたはもっと良い方法を知っていますか?


re.escape()を使うことができます:

re.escape(string)英数字以外のすべての文字列をバックスラッシュで返します。 正規表現のメタ文字が含まれている可能性がある任意のリテラル文字列と一致させる場合に便利です。

>>> import re
>>> re.escape('^a.*$')
'\\^a\\.\\*\\$'

これにはre.escape()関数を使用します:

4.2.3モジュールの内容

エスケープ(文字列)

すべての英数字以外の文字列をバックスラッシュで返します。 正規表現のメタ文字が含まれている可能性がある任意のリテラル文字列と一致させる場合に便利です。

単純な例では、指定された文字列の後にオプションで 's'が続くかどうかを検索し、一致オブジェクトを返します。

def simplistic_plural(word, text):
    word_or_plural = re.escape(word) + 's?'
    return re.match(word_or_plural, text)





regex