2024-04-19 23:05:58 发布
网友
我想匹配任何不以4321开头的字符串 我得到的条件是肯定的:匹配任何以4321开头的字符串:
^4321.*
regex here
现在我想改变这种情况,例如:
1234555
12322222
None
4321ZZZ
43211111
请帮助我找到最简单的正则表达式尽可能实现这一点。
我使用的是mongo regex,但是regex对象是用python构建的,所以请不要在这里使用python代码(比如startswith)
startswith
为什么不匹配字符串,并使用not对布尔值求反:
not
import re result = re.match('^4321.*', value) if not result: print('no match!')
你不需要正则表达式。只需使用not和startswith()方法:
startswith()
if not mystring.startswith('4321'):
你甚至可以把它切成片,然后比较相等性:
if mystring[:4] != '4321':
您可以使用负向前看(需要多行修饰符):
^(?!4321).*
您还可以使用否定的后视(暂时不匹配空字符串):
(^.{1,3}$|^.{4}(?<!4321).*)
注意:与所述的另一个答案一样,regex不是必需的(但由于这是一个逐字逐句的问题而给出的)->;而只是使用if not mystring.startswith('4321')。
if not mystring.startswith('4321')
编辑:我知道你现在明确要求一个regex,所以拿我的第一个来说,它是我能想到的最短的;)
为什么不匹配字符串,并使用
not
对布尔值求反:你不需要正则表达式。只需使用
not
和startswith()
方法:你甚至可以把它切成片,然后比较相等性:
您可以使用负向前看(需要多行修饰符):
您还可以使用否定的后视(暂时不匹配空字符串):
注意:与所述的另一个答案一样,regex不是必需的(但由于这是一个逐字逐句的问题而给出的)->;而只是使用
if not mystring.startswith('4321')
。编辑:我知道你现在明确要求一个regex,所以拿我的第一个来说,它是我能想到的最短的;)
相关问题 更多 >
编程相关推荐