Нет, прямого оператора нет. По крайней мере, не так, как вы надеетесь.
Вы можете использовать отрицательный прогноз нулевой ширины, однако:
\((?!2001)[0-9a-zA-z _\.\-:]*\)
Часть (?!...)
означает «совпадать только в том случае, если текст , следующий за (отсюда: lookahead), этот не (отсюда: отрицательный) соответствует этому. Но это не так на самом деле потребляет символов, которым оно соответствует (отсюда: нулевая ширина).
На самом деле существует 4 комбинации lookarounds с 2 осями:
- lookbehind / lookahead: указывает, будут ли символы до или после точки считаться
- положительный / отрицательный: указывает, должны ли символы должны совпадать или не должны совпадать.