有一个文本列表:
l=["SOMETHING","SOME_1","SOM_1"]
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个正则表达式模式来匹配第一个字符串,但不匹配第二个字符串:
TRUE如果文本以 'SOM' 开头,可能有一些其他字符,并且没有下划线,则返回;FALSE如果文本以 'SOM' 开头并且至少包含一个下划线(文本内的某处,下划线在哪里并不重要),则返回这是我尝试过的,但不起作用:
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))
Run Code Online (Sandbox Code Playgroud)
我期待:
True
False
False
Run Code Online (Sandbox Code Playgroud)
但我认为乘法操作数不正确,因为我得到:
True
True
False
Run Code Online (Sandbox Code Playgroud)
import re
l=["SOMETHING","SOME_1","SOM_1"]
find_pattern=re.compile("^SOM[^_]*$")
for s in l:
print bool(find_pattern.match(s))
Run Code Online (Sandbox Code Playgroud)
打印预期结果:
True
False
False
Run Code Online (Sandbox Code Playgroud)
在该模式中,请注意锚点的重要性$。如果不存在,您将收到误报。