不包含字符的Python正则表达式
有一个文本列表:不包含字符的Python正则表达式,python,regex,Python,Regex,有一个文本列表: l=["SOMETHING","SOME_1","SOM_1"] 我正在寻找与第一个字符串匹配的正则表达式模式,但与第二个字符串不匹配: 如果文本以“SOM”(可能是其他字符)开头且没有下划线,则返回TRUE; 因此,如果文本以“SOM”开头并且在文本中的某个位置至少包含一个下划线,则返回FALSE,该下划线位于何处并不重要 这是我尝试过的,但不起作用: import re l=["SOMETHING","SOME_1","SOM_1"] find_pattern=re.co
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
打印预期结果:
True
False
False
在模式中,注意$anchor的重要性。如果这不存在,您将收到假阳性
打印预期结果:
True
False
False
在模式中,注意$anchor的重要性。如果这不存在,您将收到误报。尝试以下方法:
find_pattern = re.compile('^SOM[^_]*(?!\_)$')
for s in l:
print(bool(find_pattern.match(s)))
# True
# False
# False
这里的示例和说明:试试这个:
find_pattern = re.compile('^SOM[^_]*(?!\_)$')
for s in l:
print(bool(find_pattern.match(s)))
# True
# False
# False
此处的示例和说明:以som开头,后跟0个或多个非som字符。我最初的代码是在som和。我明白我错在哪里了,谢谢!以som开头,后跟0个或多个非som字符。我最初的代码是在som和。我明白我错在哪里了,谢谢!我相信提问者在Python 2上。打印。。。在Python2中也是有效的语法,但注意到了。我刚刚注意到我的否定前瞻是多余的,它基本上可以归结为与您相同的答案;没错,打印。。。在Python2中工作。这也很好,但我选择另一个答案只是因为它更符合我正在处理的直截了当的文本。我相信提问者是在Python2上。打印。。。在Python2中也是有效的语法,但注意到了。我刚刚注意到我的否定前瞻是多余的,它基本上可以归结为与您相同的答案;没错,打印。。。在Python2中工作。这也很好,但我选择另一个答案只是因为它更符合我正在处理的直截了当的文本