python regex匹配字符串不以

2024-04-19 23:05:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我想匹配任何不以4321开头的字符串 我得到的条件是肯定的:匹配任何以4321开头的字符串:

^4321.* 

regex here

现在我想改变这种情况,例如:

  • 1234555通过
  • 12322222通过
  • None通过
  • 4321ZZZ不通过
  • 43211111不通过

请帮助我找到最简单的正则表达式尽可能实现这一点。

我使用的是mongo regex,但是regex对象是用python构建的,所以请不要在这里使用python代码(比如startswith


Tags: 对象字符串代码noneheremongo情况条件
3条回答

为什么不匹配字符串,并使用not对布尔值求反:

import re
result = re.match('^4321.*', value)
if not result:
    print('no match!')

你不需要正则表达式。只需使用notstartswith()方法:

if not mystring.startswith('4321'):

你甚至可以把它切成片,然后比较相等性:

if mystring[:4] != '4321':

您可以使用负向前看(需要多行修饰符):

^(?!4321).*

您还可以使用否定的后视(暂时不匹配空字符串):

(^.{1,3}$|^.{4}(?<!4321).*)

注意:与所述的另一个答案一样,regex不是必需的(但由于这是一个逐字逐句的问题而给出的)->;而只是使用if not mystring.startswith('4321')

编辑:我知道你现在明确要求一个regex,所以拿我的第一个来说,它是我能想到的最短的;)

相关问题 更多 >