回答:
いいえ、直接否定演算子はありません。少なくともあなたが望む方法ではありません。
ただし、幅ゼロの負の先読みを使用できます。
\((?!2001)[0-9a-zA-z _\.\-:]*\)
この(?!...)
部分は、「次のテキスト(したがって:先読み)がこれに一致しない(したがって、否定)の場合にのみ一致することを意味します。しかし、実際には一致する文字(つまり、幅がゼロ)を消費しません。
実際には、2つの軸を持つルックアラウンドの 4つの組み合わせがあります。
\((?![\d]{4})[0-9a-zA-z _\.\-:]+\)
まだある(20019)
ことに
{4}
外側を入れ、このコメントではそれを内側に入れました。どれを試しましたか?また:あなたがしたい場合は(20019)
一致し、その後、あなたが追加する必要があります\)
内側にあなたの先読み:\((?![\d]{4}\))[0-9a-zA-z _\.\-:]+\)
\((?![\d]{4} -->\)<--)[0-9a-zA-z _\.\-:]+\)
じゃあ、閉じてないブラケットがあるんだよね?
)
はリテラル文字と一致させたいので、右括弧をエスケープし)
ます(正規表現の最初と最後と同じように!)。それを一致させた後、エスケープされていないを使用して先読みを終了し)
ます。
よくわかりませんが、通常はいずれかのフォームでいくつかの回避策を使用できます
[^abc]
、a
またはb
or c
ではなく、文字ごとにa(?!b)
、a
その後にないb
(?<!a)b
、前にb
ないa
[^abc]
ではない意味すべきa
か、b
またはc
、ない「文字列ではありませんabc
」。
(2001) name
ます。