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

การทำงานของ Backreferences ใน Regular Expression ของ Python

Grouping และ Capturing Groups

จัดกลุ่ม regex โดยล้อมด้วยวงเล็บ () เพื่อนำออเปอเรเตอร์ไปใช้กับกลุ่ม วงเล็บยังสร้าง backreferences — ส่วนที่จับคู่ได้จะถูกเก็บไว้ เพื่อนำมาใช้ซ้ำใน regex เดียวกันหรือใน replacement string

การเข้าถึง Backreferences

  • ใน regex pattern: ใช้ \1, \2, ... (หมายเลขกลุ่ม)
  • ใน replacement string: ใช้ \1 หรือ $1 (ขึ้นอยู่กับ flavor)

ตัวอย่าง: จับคู่คำซ้ำ (Repeated Words)

Regex \b(\w+)\b\s+\1\b จับคู่คำที่ซ้ำกันติดกัน เช่น "tahiti tahiti"

  • \b(\w+)\b - จับคู่คำเต็ม และ capture ไว้ในกลุ่มที่ 1
  • \s+ - ช่องว่าง 1 ตัวขึ้นไป
  • \1 - backreference ไปยังกลุ่มที่ 1 (คำเดียวกัน)
  • \b - ขอบเขตคำท้าย

ตัวอย่างโค้ด

import re
s = 'Tahiti Tahiti Atoll'
result = re.findall(r'\b(\w+)\b\s+\1\b', s)
print(result)

ผลลัพธ์

['Tahiti']

พบ "Tahiti Tahiti" → capture "Tahiti" ในกลุ่ม1 → \1 จับคู่ "Tahiti" อีกครั้ง → match สำเร็จ