我有两个字符串列表,其中包含一些不同的元素和一些重复的元素。但是,第二个字符中的重复元素有所不同 例如
ListA=[MaB123, MaD789, DaB123]
ListB=[MbB123, MbQ789, DbB123]
我想检查列表A中的每个元素是否存在列表B中的重复。
在上面,我想要:
ListA [0]匹配ListB [0]
ListA [1]没有匹配项
ListA [2]匹配ListB [2]
我正在尝试使用re库做到这一点。
我打算编写一个for循环来检查ListA的每个元素,并测试与ListB中的元素的匹配情况(可能效率低下,但此刻正试图绕过正则表达式),但我陷入了困境获得我需要使用的正则表达式的阶段。
所以让我们假设
StringA=listA[0]='MaB123'
StringB=listB[0]='MbB123'
我想使用字符串切片构建正则表达式,以便可以在for循环中动态构建正则表达式。
这是我尝试过的
m=re.search(r'(stringA[0])[ab](stringA[2:])',stringB)
display(m)
但是它返回“ none”
而
m=re.search(r'([M])[ab]([B123])',stringB)
display(m)
返回一个匹配项。第一个表达式和第二个表达式之间有什么区别,如何使用字符串切片构建正则表达式?
非常感谢
答案 0 :(得分:0)
您应该使用f字符串或格式。您当前的正则表达式不包含您的变量。
m=re.search(r'(stringA[0])[ab](stringA[2:])',stringB)
对此
m=re.search(rf'({stringA[0]})[ab]({stringA[2:]})',stringB)