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 สำเร็จ