Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Raw String Notation (chuỗi thô) trong regex Python là gì?


Raw String Notation

Theo tài liệu Python, ký pháp raw string (r"text") giữ cho biểu thức chính quy có ý nghĩa và tránh nhầm lẫn. Nếu không dùng, mọi dấu gạch chéo ngược (\) trong regex phải thêm một dấu gạch chéo nữa để escape. Hai dòng sau tương đươ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 dấu gạch chéo ngược thực sự (\), nó phải được escape trong regex. Với raw string nghĩa là r"\\". Không dùng raw string thì phải viết "\\\\". Hai dòng sau tương đương:

>>> re.match(r"\\", r"\\")
<_sre.SRE_Match object; span=(0, 1), match='\\'>
>>> re.match("\\\\", r"\\")
<_sre.SRE_Match object; span=(0, 1), match='\\'>

Quy tắc vàng: Luôn dùng raw string (r"...") cho pattern regex để tránh lỗi escape và dễ đọc hơn.