正则表达式匹配除给定正则表达式之外的所

Sha*_*mar 11 python regex

我试图找出一个正则表达式,匹配任何不以mpeg开头的字符串.对此的一般化是匹配任何不以给定正则表达式开头的字符串.

我试过如下的事情:

[^m][^p][^e][^g].* 
Run Code Online (Sandbox Code Playgroud)

这个问题是它要求字符串中至少包含4个字符.我无法找到一种处理这种方法的好方法,也是一种以通用方式处理这种方法的通用方法.

我将在Python中使用它.

Amb*_*ber 28

^(?!mpeg).*
Run Code Online (Sandbox Code Playgroud)

这使用负前瞻来匹配开头不匹配的字符串mpeg.本质上,它要求"字符串开头的位置不能是一个位置,如果我们开始匹配正则表达式mpeg,我们就可以成功匹配" - 从而匹配任何不以mpeg开头的东西,并且不匹配任何东西.

但是,我对你正在使用它的上下文感到好奇 - 除了正则表达式之外可能还有其他选择,它们可以更高效或更具可读性,例如......

if not inputstring.startswith("mpeg"):
Run Code Online (Sandbox Code Playgroud)


gho*_*g74 9

不要因为正则表达而失去理智.

if len(mystring) >=4 and mystring[:4]=="mpeg":
    print "do something"
Run Code Online (Sandbox Code Playgroud)

或者使用带有"not"关键字的startswith()

if len(mystring)>=4 and not mystring.startswith("mpeg")
Run Code Online (Sandbox Code Playgroud)

  • 请注意,您实际上并不需要`len()`检查 - 您可以将字符串切割到其边界之外,您只需返回更少的字符. (5认同)