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 站點假定您使用的是原始字符串文字。
添加回答
舉報