首页 > 解决方案 > 匹配带方括号的字符串

问题描述

我有一个这样的输入列表,我正在阅读:

MyList = ["BUS_A[0]", "BUS_A[1]", "BUS_A[2]", "BUS_B[0]", "PORTA", "PORTB"]

我有一个正在阅读的 yaml 正则表达式,如下所示:

regex:  
- BUS_A[0]  
- BUS_A[2]  
- PORTB

我想从列表中过滤掉 yaml 中的正则表达式。

所以首先我阅读了包含正则表达式的 Yaml 文件:

with open(options.ExcludeYaml, 'r') as InYaml:  
    ReadFullYaml = yaml.safe_load(InYaml)  
Ports =    ReadFullYaml["regex"]

然后我编译正则表达式:

MyPattern = re.compile(r'\b(?:%s)\b' % '|'.join(Ports))

然后我遍历列表以过滤掉匹配项:

for i in MyList:  
    if re.match(MyPattern, i):
        print (i)  

但是,当我运行代码时,它只匹配 PORTB:

csh> temp.py -m temp.yaml  
csh> PORTB

我尝试将 yaml 中的正则表达式更新为 BUS_A\[0\] 和 BUS_A\\[0\\] 但它不起作用。知道我在正则表达式上做错了什么吗?如何使用方括号匹配字符串?

谢谢!

标签: pythonpython-3.x

解决方案


推荐阅读