私は次の正規表現を使用しています
^[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
は、生バックスラッシュエスケープを解析しない文字列。