Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Raw String Notation ในนิพจน์ปกติของ Python คืออะไร


สัญกรณ์สตริงดิบ

ตามเอกสารของ Python สัญกรณ์สตริงแบบ raw (r"text") ช่วยให้นิพจน์ทั่วไปมีความหมายและปราศจากความสับสน หากไม่มี แบ็กสแลช ('\') ทุกตัวในนิพจน์ทั่วไปจะต้องนำหน้าด้วยอีกอันหนึ่งเพื่อหลีกเลี่ยง ตัวอย่างเช่น โค้ดสองบรรทัดต่อไปนี้มีฟังก์ชันเหมือนกัน −

>>> 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 '>

เมื่อต้องการจับคู่แบ็กสแลชตามตัวอักษร จะต้องหลีกเลี่ยงในนิพจน์ทั่วไป ด้วยสัญกรณ์สตริงแบบ raw นี่หมายถึง r"\\" หากไม่มีสัญกรณ์สตริงดิบ เราต้องใช้ "\\\\" ทำให้บรรทัดของโค้ดต่อไปนี้ทำงานเหมือนกัน -

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