Ký hiệu chuỗi thô
Theo tài liệu Python, ký hiệu chuỗi thô (r "text") giữ cho các biểu thức chính quy có ý nghĩa và không bị nhầm lẫn. Nếu không có nó, mọi dấu gạch chéo ngược ('\') trong một biểu thức chính quy sẽ phải được bắt đầu bằng một số khác để thoát khỏi nó. Ví dụ:hai dòng mã sau đây giống hệt nhau về chức năng -
>>> re.match(r"\W(.)\1\W", " ff ") <_sre.SRE_Match object; span=(0, 4), match=' ff '> >>> re.match("\\W(.)\\1\\W", " ff ") <_sre.SRE_Match object; span=(0, 4), match=' ff '>
Khi muốn khớp một dấu gạch chéo ngược theo nghĩa đen, nó phải được thoát ra trong biểu thức chính quy. Với ký hiệu chuỗi thô, điều này có nghĩa là r "\\". Nếu không có ký hiệu chuỗi thô, người ta phải sử dụng "\\\\", làm cho các dòng mã sau giống hệt nhau về chức năng -
>>> re.match(r"\\", r"\\") <_sre.SRE_Match object; span=(0, 1), match='\\'> >>> re.match("\\\\", r"\\") <_sre.SRE_Match object; span=(0, 1), match='\\'>