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

อะไรคือความแตกต่างระหว่างวิธีการ re.findall() และ re.finditer() ที่มีอยู่ใน Python


วิธีการ re.findall()

re.findall() ช่วยในการรับรายการรูปแบบที่ตรงกันทั้งหมด มันค้นหาจากจุดเริ่มต้นหรือจุดสิ้นสุดของสตริงที่กำหนด ถ้าเราใช้วิธี findall เพื่อค้นหารูปแบบในสตริงที่กำหนด มันจะคืนค่ารูปแบบที่เกิดขึ้นทั้งหมด ขณะค้นหารูปแบบ ขอแนะนำให้ใช้ re.findall() เสมอ โดยจะทำงานเหมือน re.search() และ re.match() ทั้งคู่

ตัวอย่าง

import re result = re.search(r'TP', 'TP Tutorials Point TP')

print result.group()

ผลลัพธ์

TP

เมธอด re.finditer()

re.finditer(รูปแบบ, สตริง, ธง=0)

ส่งคืนตัววนซ้ำที่ให้อินสแตนซ์ MatchObject สำหรับการจับคู่ที่ไม่ทับซ้อนกันทั้งหมดสำหรับรูปแบบ RE ในสตริง สตริงจะถูกสแกนจากซ้ายไปขวา และผลลัพธ์ที่ตรงกันจะถูกส่งคืนตามลำดับที่พบ การแข่งขันที่ว่างเปล่าจะรวมอยู่ในผลลัพธ์

โค้ดต่อไปนี้แสดงการใช้เมธอด re.finditer() ใน Python regex

ตัวอย่าง

import re s1 = 'Blue Berries'
pattern = 'Blue Berries'
for match in re.finditer(pattern, s1):
    s = match.start()
    e = match.end()
    print 'String match "%s" at %d:%d' % (s1[s:e], s, e)

ผลลัพธ์

Strings match "Blue Berries" at 0:12