ตัวดำเนินการกำหนดจำนวนครั้งของอักขระ
มีสถานการณ์ที่คุณต้องระบุว่า
อักขระถูกทำซ้ำจำนวนครั้งที่กำหนด
หากไม่ทราบจำนวนครั้งที่แน่นอน
คุณก็แค่เขียนมันหลายๆ ครั้ง
- 'aaaa' แต่จะทำอย่างไรหากคุณต้องการ
พูดว่า: ทำซ้ำหนึ่งครั้งหรือมากกว่า?
สำหรับสิ่งนี้มีตัวดำเนินการกำหนดจำนวนครั้ง (quantifiers):
เครื่องหมายบวก + (หนึ่งครั้งหรือมากกว่า),
เครื่องหมายดอกจัน * (ศูนย์ครั้งหรือมากกว่า)
และเครื่องหมายคำถาม ? (ศูนย์หรือหนึ่งครั้ง)
ตัวดำเนินการเหล่านี้ส่งผลต่ออักขระ
ที่อยู่ก่อนหน้าพวกมัน
มาดูการทำงานของตัวดำเนินการเหล่านี้ ผ่านตัวอย่างกัน
ตัวอย่าง
ค้นหาสตริงย่อยทั้งหมดตามแพตเทิร์น อักษร
'x', อักษร 'a' หนึ่งครั้งหรือมากกว่า,
อักษร 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
ผลลัพธ์จากการรันโค้ด:
'xx ! ! ! xbx'
ตัวอย่าง
ค้นหาสตริงย่อยทั้งหมดตามแพตเทิร์น อักษร
'x', อักษร 'a' ศูนย์ครั้งหรือมากกว่า,
อักษร 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
ผลลัพธ์จากการรันโค้ด:
'! ! ! ! xbx'
ตัวอย่าง
ค้นหาสตริงย่อยทั้งหมดตามแพตเทิร์น อักษร
'x', อักษร 'a' ศูนย์หรือหนึ่งครั้ง,
อักษร 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
ผลลัพธ์จากการรันโค้ด:
'! ! xaax xbx'
แบบฝึกหัด
กำหนดสตริง:
txt = 'aa aba abba abbba abca abea'
เขียน Regular Expression เพื่อค้นหาสตริง
'aba', 'abba', 'abbba'
ตามแพตเทิร์น: อักษร 'a', อักษร
'b' จำนวนครั้งใดๆ, อักษร
'a'
กำหนดสตริง:
txt = 'aa aba abba abbba abca abea'
เขียน Regular Expression เพื่อค้นหาสตริง
'aa', 'aba', 'abba',
'abbba' ตามแพตเทิร์น: อักษร
'a', อักษร 'b' จำนวนครั้งใดๆ
(รวมถึงศูนย์ครั้ง), อักษร
'a'
กำหนดสตริง:
txt = 'aa aba abba abbba abca abea'
เขียน Regular Expression เพื่อค้นหาสตริง
'aa', 'aba' ตามแพตเทิร์น:
อักษร 'a', อักษร 'b' หนึ่งครั้ง
หรือไม่มีเลย, อักษร 'a'
กำหนดสตริง:
txt = 'aa aba abba abbba abca abea'
เขียน Regular Expression เพื่อค้นหาสตริง
'aa', 'aba', 'abba',
'abbba' โดยไม่จับ 'abca'
และ 'abea'