1 回答

TA贡献1862条经验 获得超7个赞
使用原始字符串定义正则表达式:
价格 = r '\b(price|rs)?\s*(\d+[\s\d.]*\s*?(pkg|k|m|(?:la(?:c|kh|k)) |crore|cr)s?|l)\b\.?)'
否则\b被解释为退格:
>>> print '\b(price|rs)?\s*(\d+[\s\d.]*\s*?(pkg|k|m|(?:la(?:c|kh|k)|crore|cr)s?|l)\b\.?)'
(price|rs)?\s*(\d+[\s\d.]*\s*?(pkg|k|m|(?:la(?:c|kh|k)|crore|cr)s?|l\.?)
>>> print r'\b(price|rs)?\s*(\d+[\s\d.]*\s*?(pkg|k|m|(?:la(?:c|kh|k)|crore|cr)s?|l)\b\.?)'
\b(price|rs)?\s*(\d+[\s\d.]*\s*?(pkg|k|m|(?:la(?:c|kh|k)|crore|cr)s?|l)\b\.?)
请注意第一个print输出如何不包含初始\b. 请记住,字符串首先由 python 编译器解释,这意味着所有常用的转义\n符\b,如换行符、退格符或\x42forB都被处理。然后将结果字符串传递给re解释自己转义的模块。因此,在 99.9% 的情况下,您希望避免编译器解释转义。原始字符串就是这样做的。
regex101 站点假定您使用的是原始字符串文字。
添加回答
举报