正则expression式不是操作符
Regexes中是否有NOT运算符? 就像那个string: "(2001) (asdf) (dasd1123_asd 21.01.2011 zqge)(dzqge) name (20019)"
我想删除所有\([0-9a-zA-z _\.\-:]*\)
但不是一年中的那个: (2001)
。
那么正则expression式应该返回的是(2001) name
。
注意:类似\((?![\d]){4}[0-9a-zA-z _\.\-:]*\)
不适用于我( (20019)
莫名其妙地匹配.. 。)
不,没有直接的不是操作员。 至less不是你所希望的。
但是,您可以使用零宽度的负向预测:
\((?!2001)[0-9a-zA-z _\.\-:]*\)
(?!...)
部分的意思是“只有当后面的文本(因此:前瞻) 不匹配(因此:负面)匹配这个匹配,但它实际上并不消耗匹配的字符(因此:宽度)。
实际上有两个轴与周围的 4个组合:
- lookbehead / lookahead:指定是否考虑点之前或之后的字符
- 正面/负面:指定字符必须匹配还是不能匹配。
虽然一般情况下,您通常可以在其中一个表格上使用一些解决方法
-
[^abc]
,这不过是abc
, - 或负面的前瞻:
a(?!b)
,这是a
没有跟着b
- 或负向后视:
(?<!a)b
,这是b
前面没有a