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

เมธอด groups() ใน Regular Expression ของ Python

เมธอด re.groups() (บน Match object)

คืนค่า tuple ที่มี subgroup ทั้งหมดของการจับคู่ จากกลุ่มที่ 1 ถึงจำนวนกลุ่มใน pattern อาร์กิวเมนต์ default ใช้สำหรับกลุ่มที่ไม่ได้เข้าร่วมการจับคู่ (ค่าเริ่มต้นคือ None) ตั้งแต่เวอร์ชัน 1.5.1 ขึ้นไป คืนค่า singleton tuple ในกรณีดังกล่าว

ตัวอย่างพื้นฐาน

>> import re
>>> m = re.match(r"(\d+)\.(\d+)", "27.1835")
>>> m.groups()
('27', '1835')

กรณีกลุ่มที่ไม่เข้าร่วมการจับคู่ (Optional Groups)

>> m = re.match(r"(\d+)\.?(\d+)?", "27")
>>> m.groups()           # กลุ่มที่ 2 ไม่เข้าร่วม → None
('27', None)
>>> m.groups('0')        # ระบุ default = '0'
('27', '0')

คำอธิบาย

  • Pattern (\d+)\.?(\d+)?: กลุ่ม1 = ตัวเลข 1+ ตัว, จุดทศนิยม 0-1 ตัว, กลุ่ม2 = ตัวเลข 1+ ตัว (optional)
  • สตริง "27" ไม่มีจุดทศนิยม → กลุ่ม2 ไม่เข้าร่วม match → ค่า default คือ None
  • ใช้ groups('0') เพื่อกำหนดค่า default เอง