回答:
いいえ、直接否定演算子はありません。少なくともあなたが望む方法ではありません。
ただし、幅ゼロの負の先読みを使用できます。
\((?!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またはbor cではなく、文字ごとにa(?!b)、aその後にないb(?<!a)b、前にbないa[^abc]ではない意味すべきaか、bまたはc、ない「文字列ではありませんabc」。
(2001) nameます。