正規表現でバックスラッシュをエスケープできませんか? 質問する

正規表現でバックスラッシュをエスケープできませんか? 質問する

私は次の正規表現を使用しています

^[a-zA-Z0-9\',!;\?\$\^:\\\/`\|~&\" @#%\*\{}\(\)_\+\.\s=-]{1,1000}$

見苦しいのは承知していますが、バックスラッシュがエスケープされているため使用できないという点を除けば、これまでのところ目的は果たしています。また、\\の代わりにを試してみました\\\が、結果は同じでした。
何かアイデアはありますか?

ベストアンサー1

これをプログラム内の文字列に入れる場合は、実際には4つのバックスラッシュを使う必要があるかもしれません(文字列パーサーは、これを「エスケープ解除」するときに2つを削除するため)。、そして正規表現ではエスケープされた正規表現のバックスラッシュが 2 つ必要になります。

例えば:

regex("\\\\")

次のように解釈されます...

regex("\\" [escaped backslash] followed by "\\" [escaped backslash])

次のように解釈されます...

regex(\\)

単一のバックスラッシュに一致する正規表現として解釈されます。


言語によっては、エスケープ シーケンスを解析しない別の形式の引用符を使用することで、エスケープ シーケンスをあまり使用しなくても済む場合があります。たとえば、Python では次のようになります。

re.compile(r'\\')

引用符の前の「」rは、バックスラッシュエスケープを解析しない文字列。

おすすめ記事