如何在不使用BackSlash的情况下逃脱Python Regex特殊字符



我的正则表达式看起来像这样:

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

相关内容

最新更新