วิธีการ finditer ของโมดูล re

วิธีการ finditer ของโมดูล re จะคืนค่าอิเทอเรเตอร์ของการจับคู่ทั้งหมดกับ นิพจน์ปกติ ในสตริง ในพารามิเตอร์แรกของเมธอดเราระบุ นิพจน์ปกติ ในพารามิเตอร์ที่สองเรากำหนด สตริงที่เราต้องการค้นหานิพจน์ปกติ ในพารามิเตอร์ที่สาม ซึ่งเป็นตัวเลือกสามารถกำหนด แฟล็ก ได้ เมธอดจะตรวจสอบการจับคู่ทั้งหมด โดยค้นหา จากซ้ายไปขวา

ไวยากรณ์

pythonimport re

re.finditer(นิพจน์ปกติ, สตริง, [แฟล็ก])

ตัวอย่าง

ลองหาสตริงย่อยทั้งหมดที่มีตัวเลขใน สตริงของเรา:

pythontxt = 'aaaa 123 bbbb 456'
res = re.finditer('\d+', txt)

print(res)

ผลลัพธ์จากการรันโค้ด:

python<callable_iterator object at 0x000002AA891300A0>

ตัวอย่าง

ตอนนี้ลองประกาศตัวแปร res ซึ่งมีค่าเป็นออบเจกต์ที่เราได้ มาในตัวอย่างก่อนหน้านี้ จากนั้นวนลูปผ่าน มัน:

pythontxt = 'aaaa 123 bbbb 456'
res = re.finditer('\d+', txt)

for el in res:
  print(el)

หลังจากรันโค้ด เราจะได้ออบเจกต์ Match object สองตัว:

python<re.Match object; span=(5, 8), match='123'>
<re.Match object; span=(14, 17), match='456'>

ออบเจกต์เหล่านี้มีข้อมูลเกี่ยวกับ การจับคู่ทั้งหมดกับนิพจน์ปกติในรูปแบบทูเปิล เราสามารถแสดงการจับคู่จาก พวกมันโดยใช้ดัชนี:

pythonfor el in res:
  print(el[0])

ผลลัพธ์จากการรันโค้ด:

python'123'
'456'

ตัวอย่าง

เพื่อให้เห็นภาพชัดเจนขึ้น ลองใช้ กรุ๊ป (capture groups) ในการค้นหา การจับคู่ และ ขณะที่วนลูปผ่านออบเจกต์ ให้แสดงการจับคู่แรก (ซึ่งจะถูกนับเป็นกรุ๊ปที่ศูนย์) รวมถึงสมาชิกของมัน ซึ่งกระจายอยู่ใน กรุ๊ปเช่นกัน:

pythontxt = 'aaaa 123 bbbb 456'
res = re.finditer('(\d)(\d)', txt)

for el in res:
  print(el[0], el[1], el[2])

หลังจากรันโค้ด เราจะได้กรุ๊ปที่ศูนย์ ซึ่งก็คือสตริงย่อยทั้งหมด และยังได้อักขระตัวแรก และตัวที่สองจากสตริงย่อยนี้:

python'12' '1' '2'
'45' '4' '5'

ดูเพิ่มเติม

  • วิธีการ findall ของโมดูล re,
    ซึ่งจะคืนค่า รายการของการจับคู่ทั้งหมดในสตริง
  • วิธีการ search ของโมดูล re,
    ซึ่งค้นหาการจับคู่ แรกกับนิพจน์ปกติในสตริง
  • วิธีการ match ของโมดูล re,
    ซึ่งค้นหา การจับคู่กับนิพจน์ปกติที่จุดเริ่มต้นของสตริง
  • วิธีการ fullmatch ของโมดูล re,
    ซึ่งค้นหาการจับคู่ ทั้งหมดกับนิพจน์ปกติในสตริง
  • ออบเจกต์ Match object ของโมดูล re,
    ซึ่งมี ข้อมูลเกี่ยวกับการจับคู่กับนิพจน์ปกติ
  • วิธีการ split ของโมดูล re,
    ซึ่งแยก สตริงออกเป็นรายการตามตัวแบ่งที่กำหนด