[英]Want Regular Expression to find match in list elements and then remove unmatched substring from the matching strings
There are two python lists:有两个python列表:
list1 = ['/data/model/Analyses/.*:Get', '/data/major/.*/project:Get', '/new/data/.*:Put']
list2 = ['data/model/Analyses/Uk5Ynsk:Get', '/data/major/cbd-05-edf-$/project:Get', '/new/data/${he:llo}/variable:Put', '/data/major/sdf?sj85/project:Get']
From list1, I want to find the match in list2
for each element in list1
.从 list1 中,我想在list2
中为list1
中的每个元素找到匹配项。 Then want to remove the substring from list2 which is at the place of ".*" in list1.然后想从list2中删除list1中“。*”位置的子字符串。
For example : element from list1 '/data/major/.*/project:Get'
is matched with elements from list2 '/data/major/cbd-05-edf-$/project:Get'
and '/data/major/sdf?sj85/project:Get'
例如: list1 '/data/major/.*/project:Get'
中的元素与 list2 '/data/major/cbd-05-edf-$/project:Get'
和'/data/major/sdf?sj85/project:Get'
中的元素匹配'/data/major/sdf?sj85/project:Get'
if matched then, substring in the place of ".*" should be removed from the list2如果匹配,则应从 list2 中删除 ".*" 位置的子字符串
list1 = ['/data/model/Analyses/.*:Get', '/data/major/.*/project:Get', '/new/data/.*:Put']
list2 = ['data/model/Analyses/Uk5Ynsk:Get', '/data/major/cbd-05-edf-$/project:Get', '/new/data/${he:llo}:Put', '/data/major/sdf?sj85/project:Get']
Input1 : '/data/major/.*/project:Get'
Output2 : '/data/major//project:Get' , '/data/major//project:Get'
Input2 : '/data/model/Analyses/.*:Get'
Output2 : 'data/model/Analyses/:Get'
You could surround the desired regex pattern in a group match ( (.*)
), and if a match is found replace the content of that group by an empty string.您可以在组匹配 ( (.*)
) 中包围所需的正则表达式模式,如果找到匹配项,则将该组的内容替换为空字符串。
import re
list1 = ['/data/model/Analyses/.*:Get', '/data/major/.*/project:Get', '/new/data/.*:Put']
list2 = ['/data/model/Analyses/Uk5Ynsk:Get', '/data/major/cbd-05-edf-$/project:Get',
'/new/data/${he:llo}:Put', '/data/major/sdf?sj85/project:Get']
new_list = []
for l1 in list1:
for l2 in list2:
l1_grp = l1.replace('.*','(.*)')
match = re.search(l1_grp, l2)
if match:
new_path = l2.replace(match.group(1),'')
new_list.append(new_path)
print(new_list)
Output from new_list来自new_list的输出
[
'/data/model/Analyses/:Get',
'/data/major//project:Get',
'/data/major//project:Get',
'/new/data/:Put'
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.