我想匹配任何不以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,所以拿我的第一个来说,它是我能想到的最短的;)

09-26 11:36