รูปแบบแพตเทิร์น(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 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)