Regular Expression — ลึกซึ้ง ตอน 2
Photo: Markus Winkler / Pexels

🎙️ ฉบับพอดแคสต์ — อ่านออกเสียงประมาณ 16 นาที

วันนี้เราจะมาลงลึกกันต่อในเรื่อง Regular Expression ที่จะช่วยให้คุณพัฒนาทักษะการจัดการข้อความได้อย่างมีประสิทธิภาพ.

ในตอนที่แล้วเราได้พูดถึงพื้นฐานของ Regular Expression หรือ Regex กันไปแล้ว ซึ่งเป็นเครื่องมือที่มีพลังมากในการค้นหาข้อมูลและการจัดการกับข้อความ แต่ในตอนนี้เราจะมาลงลึกกันมากขึ้นเกี่ยวกับฟีเจอร์และเทคนิคที่น่าสนใจของ Regex ที่จะช่วยให้คุณสามารถใช้งานได้อย่างมีประสิทธิภาพมากยิ่งขึ้น

การใช้กลุ่ม (Grouping)

การใช้กลุ่มใน Regex เป็นหนึ่งในฟีเจอร์ที่ช่วยให้เราสามารถจัดกลุ่มส่วนของข้อความที่เราต้องการจับคู่ได้ โดยการใช้วงเล็บ () เพื่อสร้างกลุ่ม เช่น หากเราต้องการจับคู่หมายเลขโทรศัพท์ในรูปแบบ “123-456-7890” เราสามารถใช้ Regex ว่า “(\d{3})-(\d{3})-(\d{4})” ซึ่งในที่นี้เราจับกลุ่มหมายเลข 3 หลักแรก หมายเลข 3 หลักถัดไป และหมายเลข 4 หลักสุดท้าย

การใช้กลุ่มยังสามารถช่วยในการทำการแทนที่ข้อความได้อีกด้วย เช่น หากเราต้องการเปลี่ยนหมายเลขโทรศัพท์จากรูปแบบ “123-456-7890” เป็น “(123) 456-7890” เราสามารถใช้ Regex ในการแทนที่ได้โดยใช้กลุ่มที่เราสร้างไว้ก่อนหน้านี้ การใช้กลุ่มนี้ยังมีประโยชน์ในการจับคู่หลาย ๆ ส่วนของข้อความในเวลาเดียวกัน เช่น การจับคู่ชื่อและนามสกุลในรูปแบบ “John Doe” โดยใช้ Regex ว่า “(\w+) (\w+)” ซึ่งจะช่วยให้เราสามารถแยกชื่อและนามสกุลได้อย่างง่ายดาย

การใช้ Lookahead และ Lookbehind

Lookahead และ Lookbehind เป็นฟีเจอร์ที่ช่วยให้เราสามารถจับคู่ข้อความที่มีเงื่อนไขโดยไม่ต้องรวมเงื่อนไขนั้นในผลลัพธ์ที่จับคู่ เช่น หากเราต้องการจับคำว่า “apple” แต่ต้องการให้มันอยู่หลังคำว่า “red” เราสามารถใช้ Lookahead ได้โดยการเขียน Regex ว่า “red(?= apple)” ซึ่งจะจับคู่คำว่า “red” แต่จะไม่รวมคำว่า “apple” ในผลลัพธ์

ในทางกลับกัน Lookbehind จะเป็นการจับคู่ข้อความที่ต้องการอยู่หน้าคำที่เราต้องการ เช่น หากเราต้องการจับคำว่า “apple” ที่อยู่หน้าคำว่า “fruit” เราสามารถใช้ Regex ว่า “(?<=apple )fruit" ซึ่งจะจับคู่คำว่า "fruit" แต่จะไม่รวมคำว่า "apple" ในผลลัพธ์ ฟีเจอร์นี้มีประโยชน์มากในการกรองข้อมูลที่ต้องการ เช่น การค้นหาอีเมลที่มีคำว่า "urgent" ที่อยู่หน้าคำว่า "meeting" โดยใช้ Regex ว่า "(?<=urgent )meeting" ซึ่งจะช่วยให้เราจับคู่คำว่า "meeting" ได้อย่างแม่นยำ

การใช้ Quantifiers

Quantifiers เป็นเครื่องมือที่ช่วยให้เราสามารถกำหนดจำนวนครั้งที่เราต้องการจับคู่ข้อความ เช่น “*” หมายถึงจับคู่ 0 หรือมากกว่าหนึ่งครั้ง, “+” หมายถึงจับคู่ 1 หรือมากกว่าหนึ่งครั้ง และ “?” หมายถึงจับคู่ 0 หรือ 1 ครั้ง

ตัวอย่างเช่น หากเราต้องการจับคู่คำว่า “a” ที่อาจจะมี “b” อยู่ระหว่าง เราสามารถใช้ Regex ว่า “a(b*)” ซึ่งจะจับคู่ “a” ตามด้วย “b” ที่มีได้ 0 หรือมากกว่าหนึ่งครั้ง ดังนั้นผลลัพธ์ที่ได้อาจจะเป็น “a”, “ab”, “abb” เป็นต้น นอกจากนี้เรายังสามารถใช้ Quantifiers ในการจับคู่รูปแบบที่ซับซ้อนมากขึ้น เช่น การจับคู่หมายเลขบัตรเครดิตที่มีรูปแบบ “XXXX-XXXX-XXXX-XXXX” โดยใช้ Regex ว่า “(\d{4}-){3}\d{4}” ซึ่งจะช่วยให้เราจับคู่หมายเลขบัตรเครดิตได้อย่างแม่นยำ

การใช้ Flags เพื่อปรับแต่งการทำงานของ Regex

Flags เป็นตัวช่วยที่ช่วยให้เราสามารถปรับแต่งการทำงานของ Regex ได้ เช่น หากเราต้องการให้การจับคู่ไม่สนใจตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก เราสามารถใช้ Flag “i” เพื่อทำให้การจับคู่ไม่สนใจตัวพิมพ์ใหญ่ เช่น “(?i)apple” จะจับคู่ทั้ง “apple” และ “Apple”

นอกจากนี้ยังมี Flag อื่น ๆ เช่น “m” ที่ใช้เพื่อให้การจับคู่สามารถทำงานในหลายบรรทัดได้ หรือ “s” ที่ใช้ทำให้จุด (.) จับคู่กับทุกอย่างรวมถึงตัวขึ้นบรรทัดใหม่ การใช้ Flags จะช่วยให้การทำงานของ Regex มีความยืดหยุ่นมากขึ้น เช่น การใช้ Flag “m” เพื่อจับคู่ข้อความในหลายบรรทัด ในกรณีที่เราต้องการค้นหาคำที่อยู่ในบรรทัดใหม่เราสามารถใช้ Regex ว่า “^keyword” ซึ่งจะจับคู่คำว่า “keyword” ที่อยู่ที่จุดเริ่มต้นของบรรทัด

การใช้ Backreferences

Backreferences เป็นฟีเจอร์ที่ช่วยให้เราสามารถอ้างอิงถึงกลุ่มที่จับคู่ไว้ก่อนหน้านี้ได้ ซึ่งจะทำให้เราสามารถจับคู่ข้อความที่มีรูปแบบซ้ำกันได้ เช่น หากเราต้องการจับคู่คำที่มีรูปแบบ “abcabc” เราสามารถใช้ Regex ว่า “(abc)\1” ซึ่งจะจับคู่ “abc” และสามารถตรวจสอบว่ามันถูกซ้ำกันหรือไม่ โดยการใช้ Backreference “\1” นอกจากนี้ Backreferences ยังมีประโยชน์ในการตรวจสอบความถูกต้องของข้อมูล เช่น การตรวจสอบว่ามีการป้อนรหัสผ่านที่ซ้ำกันในฟิลด์ของแบบฟอร์ม

สรุป

การใช้งาน Regular Expression เป็นเครื่องมือที่มีพลังและมีความซับซ้อนที่สามารถช่วยให้การจัดการกับข้อความเป็นเรื่องง่ายและมีประสิทธิภาพมากขึ้น เมื่อคุณเข้าใจฟีเจอร์ต่าง ๆ เช่น กลุ่ม, Lookahead, Lookbehind, Quantifiers, Flags และ Backreferences คุณจะสามารถสร้าง Regex ที่มีความสามารถสูงและตอบสนองต่อความต้องการของคุณได้อย่างดี

ในตอนนี้เราได้สำรวจฟีเจอร์ที่น่าสนใจของ Regex กันไปแล้ว หวังว่าคุณจะนำความรู้ที่ได้ไปปรับใช้ในการทำงานของคุณได้อย่างมีประสิทธิภาพมากยิ่งขึ้น

ที่มา: TechExtreme Editorial

#Regular Expression — ลึกซึ้ง ตอน 2 #dev #พอดแคสต์ #TechExtreme #พอดแคสต์ #TechExtremePodcast

ขอบคุณที่ติดตามพอดแคสต์ของเราในวันนี้ หวังว่าคุณจะได้ความรู้ใหม่ ๆ ที่สามารถนำไปใช้ได้ในงานของคุณ.