有一个文本列表:
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 的重要性。如果不存在,您将收到误报。
