เรียนเขียนโปรแกรมง่ายๆกับ Expert Programming Tutor ในบท Python RegEx
ResEx ย่อมาจาก Regular expression
RegEx หรือนิพจน์ปกติคือลำดับของอักขระที่เป็นรูปแบบการค้นหา
สามารถใช้ RegEx เพื่อตรวจสอบว่าสตริงมีรูปแบบการค้นหาที่ระบุหรือไม่
โมดูล RegEx
Python มีแพ็คเกจในตัวที่เรียกว่า re ซึ่งสามารถใช้เพื่อทำงานกับนิพจน์ปกติ
import โมดูลใหม่
import re |
RegEx ใน Python
เมื่อนักเรียนนำเข้าโมดูลใหม่ นักเรียนสามารถเริ่มใช้นิพจน์ทั่วไป
ตัวอย่าง
หาสตริงเพื่อดูว่าเริ่มต้นด้วย "The" และลงท้ายด้วย "Spain"
ตัวอย่าง
import re txt = "The rain in Spain" if (x): |
ผลลัพธ์
YES! We have a match! |
ฟังก์ชั่น RegEx
โมดูลใหม่มีชุดของฟังก์ชั่นที่ช่วยให้เราสามารถค้นหาสตริงสำหรับการจับคู่
ตัวอย่าง
import re |
ผลลัพธ์
['ai', 'ai'] |
1.search
หา white space (\s)
ตัวอย่าง
import re |
ผลลัพธ์
The first white-space character is located in position: 3 |
2.split
Split เมื่อ Match 1 space (\s) จะ Return list ของ string ที่ถูก Split
ตัวอย่าง
import re |
ผลลัพธ์
<_sre.SRE_Match object; span=(5, 7), match='ai'> |
3.sub
เปลี่ยน White Space (\s) เป็นเลข 0 ให้หมด
ตัวอย่าง
import re |
ผลลัพธ์
The9rain9in9Spain |
Match Object
Match Object จะประกอบด้วยข้อมูลของการค้นหา และผลลัพธ์ของการค้นหา มี Method ที่ใช้บ่อย ดังนี้
1.span() Return Tuple ระบุตำแหน่งเริ่มต้น สิ้นสุดของการ Match
ตัวอย่าง
import re print(x.span()) |
ผลลัพธ์
(16,19) |
2.string Return String ที่ส่งให้ Function
ตัวอย่าง
import re |
ผลลัพธ์
The rain in Spain |
3.group() Return ส่วนของ String ที่ Match
ตัวอย่าง
import re |
ผลลัพธ์
Spain |
อักขระพิเศษ
ตัวอักษร |
คำอธิบาย |
ตัวอย่าง |
[] |
set ของตัวอักษร |
[a-f] |
\ |
เอาไว้นำหน้า Special Sequence เอาไว้ escape ตัวอักษรพิเศษ |
\d |
. |
ตัวอักษรใด ๆ ยกเว้นขึ้นบรรทัดใหม่ เช่น cut, cat |
c.t |
^ |
เริ่มต้นด้วย |
^The |
\$ |
จบด้วย |
end\$ |
* |
c ปรากฎ 0 ครั้ง หรือมากกว่า |
abc* |
+ |
c ปรากฎ 1 ครั้ง หรือมากกว่า |
abc+ |
? |
c ปรากฎ 0 ครั้ง หรือ 1 ครั้ง |
abc? |
{} |
o ปรากฎจำนวนครั้งตามที่ระบุ |
lo{2}se |
| |
อย่างใดอย่างหนึ่ง |
yes|no |
() |
Capture และ group |
|
ลำดับอักขระพิเศษ
ตัวอักษร |
คำอธิบาย |
ตัวอย่าง |
\A |
Return ถ้าตัวอักษรที่ระบุอยู่ต้น string |
\AThe |
\b |
Return ถ้าตัวอักษรที่ระบุอยู่ต้น หรือท้ายคำ (ตามตำแหน่งของ \b) |
r"\bain", r"ain\b" |
\B |
Return ถ้าพบตัวอักษรที่ระบุ ยกเว้นพบที่ต้น หรือท้ายคำ (ตามตำแหน่งของ \B) |
r"\Bain", r"ain\B" |
\d |
Return ถ้าพบตัวเลข 0-9 ใน string |
\d |
\D |
Return ถ้าไม่พบตัวเลข 0-9 ใน string |
\D |
\s |
Return ถ้าพบตัวอักษร White Space เช่น space (" "), tab ("\t"), newline ("\n"), return ("\r") ใน string |
\s |
\S |
Return ถ้าไม่พบตัวอักษร White Space ใน string |
\S |
\w |
Return ถ้าพบตัวอักษรข้อความใด ๆ เช่น (ตัวอักษร a ถึง Z, ตัวเลข 0-9, และ underscore "_" ) |
\w |
\W |
Return ถ้าไม่พบตัวอักษรข้อความใด ๆ |
\W |
\Z |
Return ถ้าตัวอักษรที่ระบุอยู่ท้าย string |
Thailand\Z |
เซ็ต |
คำอธิบาย |
[abcd] |
Return ถ้ามีตัวอักษรใดอักษรหนึ่งที่ระบุ a, b, c, d |
[a-d] |
Return ถ้ามีตัวอักษรใดอักษรหนึ่งอยู่ในช่วงที่ระบุ a - d |
[^abc] |
Return ถ้ามีตัวอักษรยกเว้นที่ระบุ เช่น d, e, f, g, h, ... X, Y, Z |
[0123] |
Return ถ้ามีตัวเลขใดเลขหนึ่งที่ระบุ 0, 1, 2, 3 |
[0-9] |
Return ถ้ามีตัวเลขในช่วงที่ระบุ 0, 1, 2, 3, ..., 9 |
[0-2][0-9] |
Return ถ้ามีตัวเลขสองหลัก ในช่วงระหว่าง 00 ถึง 29 |
[a-zA-Z] |
Return ถ้ามีตัวอักษรใดอักษรหนึ่งอยู่ในช่วงที่ระบุ a - z ไม่ว่าจะตัวใหญ่ หรือตัวเล็ก |
[+] |
ในเซ็ต +, *, ., |, (), $,{} ไม่ได้มีความหมายพิเศษ ดังนั้น [+] หมายถึง Returns ถ้ามี + |
สรุปในบทนี้จะพูดถึงเรื่อง REGEX เป็นเพื่อตรวจสอบว่ามีสตริงที่ค้นหาหรือไม่ การใช้งานของ Regex การ import มีเเพคเกจในตัวชื่อ re สามารถใช้นิพจน์ทั่วไปได้ และใช้กับฟังก์ชันต่างๆที่เราเรียนกันไปในบทความนี้
Tag ที่น่าสนใจ: python regex regular_expression module_re search_pattern match_object function_findall function_search function_split function_sub function_span function_string function_group
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM