我想匹配任何不以4321开头的字符串
我得到的条件是肯定的:匹配任何以4321开头的字符串:
^4321.*
regex here
现在我想改变这种情况,例如:
1234555
通过12322222
通过None
通过4321ZZZ
不通过43211111
不通过请帮助我找到最简单的正则表达式尽可能实现这一点。
我使用的是mongo regex,但是regex对象是用python构建的,所以请不要在这里使用python代码(比如
startswith
) 最佳答案
您可以使用负向前看(需要多行修饰符):
^(?!4321).*
您还可以使用否定的后视(暂时不匹配空字符串):
(^.{1,3}$|^.{4}(?<!4321).*)
注意:和前面提到的另一个答案一样,regex不是必需的(但它是逐字给出的,因为这是一个问题)—>而只是使用
if not mystring.startswith('4321')
。编辑:我知道你现在明确要求一个regex,所以拿我的第一个来说,它是我能想到的最短的;)