รูปแบบแพตเทิร์น(Pattern) ใน Python
Anchors^ เริ่มต้นของสตริงหรือเริ่มต้นของบรรทัดในรูปแบบหลายบรรทัด\A จุดเริ่มต้นของสตริง$ สิ้นสุดของสตริงหรือจุดสิ้นสุดของเส้นในรูปแบบหลายบรรทัด\Z สิ้นสุดของสตริง\b ขอบเขตคำ+ ตรงกับอย่างน้อยหนึ่งอักขระก่อนหน้านี้* มีหรือไม่ก็ได้| คือ "หรือ" , "OR"haracter Classes
. (จุด) แทนตัวอักษรใด ๆ 1 ตัว ยกเว้นตัวอักษรขึ้นบรรทัดใหม่\s เว้นบรรทัด\S ไม่ได้เว้นบรรทัด\B ไม่ขอบเขตคำ< จุดเริ่มต้นของคำ> สุดท้ายของคำ\b ตรงกับขอบเขต string\d แทนตัวเลข 0 ถึง 9\D ตัวอักษรที่ไม่ใช่ตัวเลข\w คำ\W ไม่ใช่คำ{จำนวนที่ซ้ำ} ระบุว่าต้องการการซ้ำซ้อนทั้งหมดกี่ตัวอักขระพิเศษ
\n บรรทัดใหม่\t Tabกลุ่ม
(? ... ) Passive (ไม่จับ) กลุ่ม[abc] ช่วง (A หรือ B หรือ C)[^abc] ไม่ใช่ a หรือ b หรือ c[a-z] ใช้แทน a - z ตัวพิมพ์เล็ก[a-z0-9] ใช้แทน a-z ตัวพิมพ์เล็กและแทนเลข 0 - 9[A-Z] ใช้แทน A - Z ตัวพิมพ์ใหญ่[A-Z0-9] ใช้แทน A - Z ตัวพิมพ์ใหญ่และแทนเลข 0 - 9[0-9] ใช้แทนช่วง 0 - 9ที่ผมยกมาด้านบนเป็นรูปแบบแพตเทิร์น(Pattern) ใน Python ที่ใช้กันบ่อย ๆ ครับ สำหรับเรื่อง รูปแบบแพตเทิร์น(Pattern) ไปศึกษารายละเอียดย่อย ๆ ได้ที่ http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/
ในการใช้ Regular Expressions ใน Python เราต้องใช้โมดูลที่มากับตัว Python ที่มีชื่อว่า re
findall
findall() เป็นฟังก์ชั่นที่มีประสิทธิภาพที่สุดในโมดูล re เราจะใช้ findall() ในการค้นหารูปแบบในตัวอย่างนี้ผลลัพธ์
['Barack Obama', 'Bill Gates']
match
re.match() ตรวจสอบว่า Regular Expressions ตรงที่จุดเริ่มต้นของสตริง เมื่อพบจะคืนค่า match object ออกมา ถ้าไม่พบจะคืนค่า None ออกมา ดังตัวอย่างต่อไปนี้>>> import re
>>> m = p.match('tempo')
>>> m
<_sre.SRE_Match object; span=(0, 5), match='tempo'>
ถ้าไม่พบข้อความ>>> import re
>>> p.match("")
>>> print(p.match(""))
None
search
re.search() ใช้ค้นหารูปแบบภายในสตริงที่กำหนด ดังตัวอย่างต่อไปนี้import re print(re.search(r'\d\d\d', 'Your number is <b>123</b>').group(0))ผลลัพธ์
123
การใช้
re.search() กับการเช็คเงื่อนไข if elseหากต้องการเช็คเงื่อนไข if else ว่าถ้าในสตริงมีรูปแบบที่ตรงกับรูปแบบ re ที่กำหนดไว้ ให้ทำเงื่อนไขใน if หากไม่ใช่ ให้ทำเงื่อนไขใน else สามารถทำได้โดยใช้โค้ดต่อไปนี้
ตัวอย่างเช่น หากกำหนดรูปแบบให้ค้นหา 0 - 9 หากพบให้แสดงเป็น 1 หากไม่พบ ให้แสดงเป็น 0
เขียนรูปแบบ re ได้เป็น [0-9]
ได้โค้ดดังนี้
ผลลัพธ์
1
sub
re.sub() เป็นคำสั่งที่ใช้แทนที่ตัวอักษรในสตริง ไม่ว่าจะเป็นคำหรือประโยค ดังตัวอย่างต่อไปนี้import re
a = "คน เดิน ด้วย เครื่องบิน"
b = re.sub("เดิน", "บิน", a)
print(b)
ผลลัพธ์คน บิน ด้วย เครื่องบิน
compile
re.compile() เป็นคำสั่งที่ใช้รวบรวมรูปแบบ (Pattern) เป็นวัตถุเก็บรูปแบบที่ต้องการ ดังตัวอย่างต่อไปนี้import reผลลัพธ์
regex = re.compile(r'([a-z]+)', re.I)
print(regex.findall("123hello456world789"))
['hello', 'world']
split
re.split เป็นคำสั่งที่ใช้แยกสตริงตามที่กำหนด เราสามารถนำมาใช้ได้กับ Regular Expressions ดังตัวอย่างต่อไปนี้>>> import re
>>> re.split('\W+','This... is a test.')
['This', 'is', 'a', 'test', '']
จบแล้วครับสำหรับเรื่อง Python Regular Expressions ครับ เวลาเรียกใช้ re ต่าง ๆ อย่าลืม import re กับตรวจสอบรูปแบบ Regular Expressions ให้ถูกต้องด้วยนะครับสำหรับท่าใดที่อยากลองเขียน Regular Expressions ดู สามารถเข้าไปลองเขียนเล่นได้ที่ http://re-try.appspot.com/
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)