Regular expression 101

Regular expression 101
06/02/19   |   15k

มาจะกล่าวบทไป

เคยเจอเนื้อหาอะไรที่มีแต่ตัวหนังสือเยอะๆ ยิ่งอ่านก็ยิ่งปวดหัว บางครั้งบางทีไม่ได้อยากจะเข้าใจความหมายสักเท่าไหร่ ใจจริงๆ อยากแค่หา "คำ" ไม่กี่คำที่ปนอยู่ในเนื้อหาเหล่านั้น ไม่ก็อยากจะเปลี่ยนจาก "คำๆหนึ่ง" เป็นอีก "คำๆหนึ่ง" ที่ต้องการก็แค่นั้น ก็แค่นั้น พูดถึงตรงนี้ ใจบางคนก็คิด

 

ctrl + f  สำหรับ windows

หรือ

cmd + f  สำหรับ osx

แล้วอยากหาอะไรก็พิมพ์ลงไป

 

มันก็ถูกครับแต่สำหรับเรา ๆ ที่เป็น developer จะเขียนโปรแกรม เขียนเว็บ หรือเขียนแอพอะไรสักอย่าง สิ่งที่เราเขียนขึ้นมาพวกนี้มันกด ctrl + f หรือ cmd + f อะไรทำนองนี้ด้วยตัวเองไม่ได้นั่นสิ

 

แล้วจะทำอย่างไรดีหละ ....

 

REGULAR EXPRESSION  ช่วยคุณได้ครับ

 

มาถึงตรงนี้หลายคนคงสงสัยว่าแล้ว regular expression มันคืออะไร ?

 

Regular expression หรือผู้เขียนขอเรียกง่าย ๆ ว่าเป็น Regex ละกันนะครับ มันคือรูปแบบหรือกลุ่มคำ ถ้าศัพท์เทคนิคหน่อยก็ pattern แหละครับ ที่เรากำหนดขึ้นเพื่อค้นหาข้อความหรือตัวอักษรต่าง ๆ ว่าตรงตามเงื่อนไขของ pattern ที่เรากำหนดไว้หรือเปล่า ซึ่งมักจะมีอยู่ในทุก ๆ ภาษา programming มีจะแค่ความแตกต่างเพียงนิดเดียวเท่านั้น

 

แล้วต้องรู้อะไรบ้างหละ ถึงจะเขียน pattern ขึ้นมาได้สักตัว ?

 

พื้นฐานหลักๆ ที่ต้องรู้ไว้เพื่อที่จะเขียน pattern มีตามนี้ครับ

 
    สัญลักษณ์                                 ความหมาย             

 .

ตัวอักษรทุกตัวยกเว้นขึ้นบรรทัดใหม่

\w

ตัวอักษรทุกตัวรวมถึง _ (underscore)

\W

ที่ไม่ใช่ตัวอักษรและ _ (underscore)

\d

ตัวเลขทุกตัว

\D

ที่ไม่ใช่ตัวเลข

\s

whitespace (tab, space, line break)

\S

ที่ไม่ใช่ whitespace

[abc]

a, b หรือ c อย่างใดอย่างหนึ่ง

[^abc]

นอกเหนือจาก a, b หรือ c

[a-c]

อะไรก็ได้ที่อยู่ระหว่าง a ถึง c

^

เริ่มต้น line pattern

$

สิ้นสุด line pattern

a*

มี a อย่างน้อย 0 ตัว

a+

มี a อย่างน้อย 1 ตัว

a?

มี a แค่ 0 หรือ 1 ตัว

a{3}

มี a 3 ตัว

a{2,5}

มี a ได้ 2 ถึง 5 ตัว

 

ถึงตรงนี้แล้วคงมีคนอยากลองของกันบ้างแล้ว ในบทความนี้จะลองยกตัวอย่าง pattern ง่าย ๆ ให้ดูกันครับ

 

ต้องบอกก่อนว่า การเขียน pattern จะต้องเขียนในรูปแบบประมาณนี้ครับ /you-pattern/

เอาหละ งั้นผู้เขียนจะสร้าง pattern ตัวนึง

 

 

อธิบายกันสักหน่อย pattern ชุดนี้จะทำการ match ข้อความหรือตัวอักษรใดๆ ก็ตาม ที่ในข้อความนั้นประกอบด้วยตัวอักษร A ถึง Z ย้ำว่าต้องเป็นตัวใหญ่นะครับ โดยอย่างน้อยต้องมีตัวอักษรในข้อความอย่างน้อย 2 ตัวจาก [A-Z] อย่างน้อย 1 ตัวและ \w+ อีกอย่างน้อย 1 ตัวครับ

 

ตัวอย่างชุดข้อความ "Regular expression or RegEx is so Easy"

 

pattern ชุดนี้จะ match ตามนี้ครับ

Regular expression or RegEx is so E Easy

 

เห็นไหมหละครับ ว่ามันง่ายนิดเดียว ส่วนการออกแบบ pattern ก็อยู่ที่แต่ละคนอยากเอาไปใช้ทำอะไรแล้วหละครับ

 

เกิดว่าถ้าใครอยากจะลองเขียนดูก็ลองเข้าเขียนในนี้ได้

 

จบแล้วนะครับสำหรับบทเรียน Regular expression 100

 

บทความหน้าผมจะนำอะไรมาแชร์อีก รอติดตามกันได้ครับ

 

Reference

- http://ashishuideveloper.in/wp-content/uploads/regexp.png

tags : regular expression pattern match-string replace regex



ติดตามข่าวสารและเรื่องราวดีๆ ทาง Email