我的正则表达式看起来像这样:
pattern = "".join([
'^',
lbtests['lbname'],
'd{4}',
'[A-Za-z]{2},
'$'
])
re.compile(pattern)
我的问题是lbtests词典有时会解决包含括号的字符串,例如Basophils (Abs)
,因此该程序认为我正在尝试创建一个组。相反,我希望它匹配字符串" basophils(abs("。
有没有办法在不使用后斜线的情况下逃脱括号?如果没有,是否有更好的方法可以解决?
使用re.escape(lbtests['lbname'])
逃脱字符串以完全匹配。
示例:
>>> import re
>>> lbtests = {'lbname':'Basophils (Abs)'}
>>> re.escape(lbtests['lbname'])
'Basophils\ \(Abs\)'
请注意,它可以逃脱空间以及括号,因此它将完全匹配。
查看 re.escape
import re
if __name__ == '__main__':
pattern = f'hello {re.escape("(world)")}'
print(re.match(pattern, 'hello (world)'))
# output:
# <re.Match object; span=(0, 13), match='hello (world)'>
https://docs.python.org/3/library/re.html#re.escape