Skip to main content
 首页 » 编程设计

排除字符的 Python 正则表达式

2025年05月04日22Terrylee

有一个文本列表:

l=["SOMETHING","SOME_1","SOM_1"] 

我正在寻找一个正则表达式模式来匹配第一个字符串,而不是第二个字符串:

  • 如果文本以 'SOM' 开头,返回 TRUE,可能还有一些其他字符,并且没有下划线;
  • 因此,如果文本以“SOM”开头并包含至少一个下划线(在文本中的某处,下划线在哪里并不重要),则返回 FALSE

这是我尝试过的方法,但不起作用:

import re 
l=["SOMETHING","SOME_1","SOM_1"] 
find_pattern=re.compile("^SOM[A-Z]*[^_]") 
for s in l: 
    print bool(find_pattern.match(s)) 

我期待:

True 
False 
False 

但我认为乘法操作数不正确,因为我得到:

True 
True 
False 

请您参考如下方法:

import re 
l=["SOMETHING","SOME_1","SOM_1"] 
find_pattern=re.compile("^SOM[^_]*$") 
for s in l: 
    print bool(find_pattern.match(s)) 

打印预期结果:

True 
False 
False 

在模式中,注意 $ anchor 的重要性。如果不存在,您将收到误报。