gpt4 book ai didi

python - 如何在Python中比较元素为正则表达式的列表?

转载 作者:行者123 更新时间:2023-12-01 05:06:36 25 4
gpt4 key购买 nike

我希望比较两个列表,一个列表包含普通数据,第二个列表包含正则表达式并返回匹配项

例如

list1 = ['linux','6.0.1','mysql','5','abcd1234']

list2 = ['linux.*','6.*','mysql|python|gvim','5|6','abcd1234|efgh5678|ijkl91011']

我想使用 list2 中的正则表达式迭代 list1 以进行匹配(在上面的情况下为 true)

或者有比列表更好的方法吗? if/elif 是可能的,但很困惑

最佳答案

要查找哪个表达式与哪个单词匹配,您可以尝试如下

list1 = ['linux','6.0.1','mysql','5','abcd1234']    
list2 = ['linux.*','6.*','mysql|python|gvim','5|6','abcd1234|efgh5678|ijkl91011']

import re
print {i:j for j in list1 for i in list2 if re.match(i,j)}

#output {'mysql|python|gvim': 'mysql', 'abcd1234|efgh5678|ijkl91011': 'abcd1234', '5|6': '5', 'linux.*': 'linux', '6.*': '6.0.1'}

如果两个或多个字符串匹配,则采用其他方式

list1 = ['linux','6.0.2','6.0.1','mysql','5','abcd1234']

list2 = ['linux.*','6.*','mysql|python|gvim','5|6','abcd1234|efgh5678|ijkl91011']

import re

print {i:[j for j in list1 if re.match(i,j)] for i in list2 }

#output {
'mysql|python|gvim': ['mysql'],
'abcd1234|efgh5678|ijkl91011': ['abcd1234'],
'5|6': ['6.0.2', '6.0.1', '5'],
'linux.*': ['linux'],
'6.*': ['6.0.2', '6.0.1']}

如果成对

list1 = ['linux','6.0.1','mysql','5','abcd1234']

list2 = ['linux.*','6.*','mysql|python|gvim','5|6','abcd1234|efgh5678|ijkl91011']

import re

print {j:i for i,j in zip(list1,list2) if re.match(j,i) }

关于python - 如何在Python中比较元素为正则表达式的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24883009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com