繁体   English   中英

如何在不使用反斜杠的情况下转义Python Regex特殊字符

[英]How to escape Python Regex special characters without using backslash

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

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.escapere.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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM