แนะนำ Regular Expressions ใน Python
Regular Expressions เป็นคำสั่งสำหรับการค้นหาและการแทนที่ที่ซับซ้อน (หรือเพียงแค่การค้นหา) พวกมันอนุญาตให้ทำสิ่งที่น่าสนใจมากมาย แต่ที่น่าเสียดายคือค่อนข้างยากในการเรียนรู้
เพื่อเริ่มต้นการทำงานกับ Regular Expressions ใน Python เราจำเป็นต้องนำเข้าโมดูลพิเศษ re:
import re
โมดูล re ประกอบด้วยเมธอดที่ออกแบบมาเพื่อทำงานกับ Regular Expressions Regular Expression คือชุดของคำสั่งและประกอบด้วยสัญลักษณ์สองประเภท: ประเภทที่แสดงถึงตัวมันเองและสัญลักษณ์-คำสั่ง ซึ่งเรียกว่า สัญลักษณ์พิเศษ
การทำความคุ้นเคยกับ Regular Expressions ควรเริ่มต้นด้วยตัวอย่างของเมธอด sub ซึ่งใช้สำหรับการแทนที่ในสตริง พารามิเตอร์แรกเมธอดรับสิ่งที่ต้องเปลี่ยน พารามิเตอร์ที่สองคือสิ่งที่ต้องเปลี่ยนเป็น ในพารามิเตอร์ที่สามเราระบุสตริงที่จำเป็นต้องทำการแทนที่ ในพารามิเตอร์ที่สี่ซึ่งเป็นตัวเลือก กำหนดจำนวนการแทนที่ การแทนที่ที่ง่ายที่สุดด้วยเมธอดนี้จะมีลักษณะดังนี้:
res = re.sub('a', '!', 'bab')
print(res) # แสดงผล 'b!b'
อย่างที่คุณสังเกตเห็น ใน Regular Expression ตัวอักษรจะแสดงถึงตัวมันเอง เช่นเดียวกับตัวเลข ลองแทนที่ตัวเลข 2 ด้วย !:
res = re.sub('2', '!', '12abc3')
print(res) # แสดงผล '1!abc3'
แต่จุด (.) เป็นสัญลักษณ์พิเศษและหมายถึง อักขระใดๆ ในตัวอย่างต่อไปนี้ ลองค้นหาสตริงย่อยตามรูปแบบนี้: ตัวอักษร 'x' จากนั้นอักขระใดๆ จากนั้นตัวอักษร 'x' อีกครั้ง:
res = re.sub('x.x', '!', 'xax eee')
print(res) # แสดงผล '! eee'
กำหนดสตริง:
txt = 'ahb acb aeb aeeb adcb axeb'
เขียน Regular Expression ที่จะค้นหาสตริง 'ahb', 'acb', 'aeb' ตามรูปแบบ: ตัวอักษร 'a', อักขระใดๆ, ตัวอักษร 'b'
กำหนดสตริง:
txt = 'aba aca aea abba adca abea'
เขียน Regular Expression ที่จะค้นหาสตริง 'abba', 'adca', 'abea' ตามรูปแบบ: ตัวอักษร 'a', 2 อักขระใดๆ, ตัวอักษร 'a'
กำหนดสตริง:
txt = 'aba aca aea abba adca abea'
เขียน Regular Expression ที่จะค้นหาสตริง 'abba' และ 'abea' โดยไม่ดักจับ 'adca'