วิธี finditer ใน regular expressions ของ Python
วิธี finditer มีวัตถุประสงค์เพื่อ
รับ iterator ของการจับคู่ทั้งหมดกับ
regex ในสตริง ในพารามิเตอร์แรกของ
วิธีเราระบุ regex ที่ต้องการค้นหา ในพารามิเตอร์ที่สอง - สตริง
ที่เราจะค้นหา วิธีนี้ตรวจสอบการจับคู่ทั้งหมด
โดยค้นหาจากซ้ายไปขวา วิธีนี้ส่งคืน
iterator ของวัตถุจับคู่ ไวยากรณ์ของ
วิธี finditer มีลักษณะดังนี้:
re.finditer(what to search, where to search)
ลองหาสตริงย่อยทั้งหมดที่มีตัวเลขใน สตริงของเรา:
txt = 'aaaa 123 bbbb 456'
print(re.finditer('\d+', txt))
ผลลัพธ์จากการรันโค้ด:
<callable_iterator object at 0x000002AA891300A0>
ทีนี้ลองประกาศตัวแปร res
ซึ่งมีค่าเป็นวัตถุที่เราได้มา
จากตัวอย่างก่อนหน้า จากนั้นวนลูปผ่านมัน:
txt = 'aaaa 123 bbbb 456'
res = re.finditer('\d+', txt)
for el in res:
print(el)
หลังจากรันโค้ด จะแสดงวัตถุการจับคู่ สองรายการ:
<re.Match object; span=(5, 8), match='123'>
<re.Match object; span=(14, 17), match='456'>
วัตถุเหล่านี้มีข้อมูลเกี่ยวกับ การจับคู่ทั้งหมดกับ regex ในรูปแบบทูเปิล สามารถดึงการจับคู่ออกมาตามดัชนีได้:
for el in res:
print(el[0])
ผลลัพธ์จากการรันโค้ด:
'123'
'456'
กำหนดสตริง:
txt = '12 aaa 34 bbb 56 ccc'
แสดงตัวเลขทั้งหมดจากสตริงนี้โดยใช้ลูป