
いくつかの特殊文字を使用する正規表現式があり、その中にたまたまいくつかの記号が含まれている「通常の」テキスト部分もあるとします。また、「通常のテキスト」部分にある「特殊文字になる可能性のある」文字をすべてエスケープするのは面倒だとします。
正規表現が特殊文字に遭遇したと認識したときに(実際には遭遇していないのに)、異常をきたさないように、「通常の」テキスト ビットを囲むにはどうすればよいですか。
たとえば、次のテキストを検索するとします。
.*Hello it's true that ([6*.5]^2=9)
。
確かに、数学セクションに特殊文字が現れるたびに、エスケープ文字を面倒に使いたくはありません (または、「don't」のアポストロフィも使いたくありません)。その一方で、.*
先頭のビットは特殊文字として扱いたいと考えています。
では、Hello it's true that ([6*.5]^2=9)
Regex がそれを特別なものではなく通常のテキストとして扱うようにセクションを囲むことはできますか?
私は検索と置換に Notepad++ を使用していますが、どのプログラムを使用しても同じ答えが得られることを願っています。
答え1
一部のツールでは、特殊文字をデフォルトでエスケープするかどうかを変更できます。たとえば、vi
(およびクローン) にはmagic
これを制御するモードがあります。これにより、必要なエスケープの量を減らすことができます。
答え2
\Q
リテラルで始めて、 で終わるようにしてください\E
。
これはさまざまな種類の正規表現で機能しますが、たとえば Java では問題が発生する可能性があります。