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