Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python正则表达式未按预期返回值_Python - Fatal编程技术网

python正则表达式未按预期返回值

python正则表达式未按预期返回值,python,Python,我只需要打印出不匹配的项目“333-33”。当我运行以下代码时,它会打印所有项目,如“111-11”、“222-22”、“333-33” “333-33”应返回None类型 有什么建议吗?事先非常感谢 ALLOW_LIST = ["(4[0-4]{2})-\d{2}", "111-11", "222-22"] item=[] codes = ["111-11", "222-22", "

我只需要打印出不匹配的项目“333-33”。当我运行以下代码时,它会打印所有项目,如“111-11”、“222-22”、“333-33”

“333-33”应返回None类型

有什么建议吗?事先非常感谢

ALLOW_LIST = ["(4[0-4]{2})-\d{2}", "111-11", "222-22"]

item=[]

codes = ["111-11", "222-22", "333-33"]
for code in codes:
    for i in ALLOW_LIST:
        if re.search(i, code) is None:
            item.append(code)
print(item)

您可以将
all
函数与一个生成器表达式一起使用,该生成器表达式在输出前迭代
ALLOW_LIST
,以确保没有任何模式与当前的
code
匹配:

[code for code in codes if all(not re.search(i, code) for i in ALLOW_LIST)]

据我所知,您只希望包含与允许列表匹配的项

如果重新搜索(i,code)为None,则if语句将追加不匹配的项目:

您应该编辑if语句以包含匹配的项:

ALLOW_LIST = ["(4[0-4]{2})-\d{2}", "111-11", "222-22"]

item=[]

codes = ["111-11", "222-22", "333-33"]
for code in codes:
    for i in ALLOW_LIST:
        if re.search(i, code):
            item.append(code)
print(item)

您可以在此处形成单个正则表达式替换:

ALLOW_LIST=[“4[0-4]{2}-\d{2}”,“111-11”,“222-22”]
regex=r'^(?:'+'|'.join(允许列表)+r'$'
项目=[]
代码=[“111-11”、“222-22”、“333-33”]
对于代码中的代码:
如果没有重新搜索(正则表达式,代码):
items.append(代码)
打印(项目)#['333-33']

按照您编写正则表达式的方式,它应该选择一个
4
,然后在
0
4
之间选择两个相同的数字,然后是破折号,最后是两个数字-您的任何代码都不会被捕获。其余的只是直接匹配,不是真正的模式。然后检查是否有任何代码与
ALLOW_LIST
中的任何模式不匹配,这在某一点上对所有代码都是正确的,因此难怪您会在
项中找到所有代码。您可能应该重新考虑您试图解决的问题。
re.search()
在与
ALLOW\u LIST
中的三个正则表达式模式进行匹配时,会返回预期的
None
,当这种情况发生时,您会将
code
追加到
,而您似乎想追加
None