用子串切片构造正则表达式

2024-09-25 14:22:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个字符串列表,其中包含一些不同的元素和一些重复的元素。然而,重复的元素在第二个字符中不同 e、 g

ListA=[MaB123, MaD789, DaB123]

ListB=[MbB123, MbQ789, DbB123]

我想检查列表A的每个元素在列表B中的重复

在上面,我想:

ListA[0]匹配ListB[0]

ListA[1]不匹配

ListA[2]匹配ListB[2]

我试着用re库来做这个

我打算编写一个for循环来检查ListA的每个元素,并测试是否与ListB中的一个元素匹配(可能效率很低,但目前只是想弄清楚regex),但我还停留在获取需要使用的正则表达式的阶段

所以让我们假设

StringA=listA[0]='MaB123'

StringB=listB[0]='MbB123'

我想使用字符串切片来构建regex,这样就可以在for循环中动态地构建regex

这就是我尝试过的

m=re.search(r'(stringA[0])[ab](stringA[2:])',stringB)
display(m)

但它返回“无”

m=re.search(r'([M])[ab]([B123])',stringB)
display(m)

返回匹配项。第一个表达式和第二个表达式有什么区别,如何使用字符串切片构建正则表达式

非常感谢


Tags: 字符串re元素列表forsearchab切片
1条回答
网友
1楼 · 发布于 2024-09-25 14:22:56

您应该使用f字符串或格式。当前正则表达式不包含变量

m=re.search(r'(stringA[0])[ab](stringA[2:])',stringB)

为了这个

m=re.search(rf'({stringA[0]})[ab]({stringA[2:]})',stringB)

相关问题 更多 >