Regular Expressions: เครื่องมือถอดรหัส เพื่อทำงานกับ Text ใน Google Sheets — แนะนำวิธีใช้สูตร REGEXMATCH, REGEXEXTRACT, REGEXREPLACE

Regular expression หรือ การเขียน pattern เพื่อทำงานกับ text เป็นเหมือนกับเครื่องถอดรหัสที่ช่วยถอดรูปแบบของข้อความ และช่วยให้เราทำงานกับข้อมูลได้ง่ายขึ้น

ยกตัวอย่างเช่น เรามีข้อมูลลูกค้าที่เก็บค่าไว้ใน cell เดียวกัน:

แต่เราต้องการแยกข้อมูลเป็น columns เพื่อความสะดวกในการใช้งานต่อ เช่น:

  • ID
  • Name
  • Address

แทนที่เรา copy-paste ข้อมูลลงทีละ column ด้วยตัวเอง เราสามารถใช้สูตร regular expression ของ Google Sheets ช่วยได้:

.

ในบทความนี้ เราจะทำความรู้จักกับ:

  1. 3 สูตร Google Sheets ที่ใช้ทำงานกับ regular expression
  2. การเขียน regular expression เพื่อใช้งาน 3 สูตรนี้

ถ้าพร้อมแล้วมาเริ่มกันเลย


  1. 👨‍🔬 Intro to REGEX Formulas
  2. ⌨️ Regular Expression Basics
    1. 🔣 (1) Special Characters
    2. 🔣 (2) Character Classes
    3. 🔣 (3) Quantifiers
    4. 🔣 (4) Others
    5. 📃 Learn More
  3. 💪 Put It All Together
    1. 🗝️ (1) REGEXMATCH
    2. 🗝️ (2) REGEXEXTRACT
    3. 🗝️ (3) REGEXREPLACE
  4. 📚 References

👨‍🔬 Intro to REGEX Formulas

Google Sheets มี 3 สูตรสำหรับใช้ regular expression ซึ่งได้แก่:

No.FormulaFor
1REGEXMATCH()เช็กหาคำที่ตรงกับ regular expression
2REGEXEXTRACT()ดึงคำที่ตรงกับ regular expression ออกมา
3REGEXREPLACE()แทนที่คำที่ตรงกับ regular expression

โดยมีการเขียนดังนี้:

No.FormulaSyntax
1REGEXMATCH()REGEXMATCH(text, regular_expression)
2REGEXEXTRACT()REGEXEXTRACT(text, regular_expression)
3REGEXREPLACE()REGEXREPLACE(text, regular_expression, replacement)
  • text คือ ข้อมูล text ที่เราจะใช้ทำงาน
  • regular_expression คือ regular expression ที่เราใช้กำหนดเงื่อนไข
  • replacement คือ คำที่จะแทนที่คำที่ตรงกับ regular expression

.

ก่อนไปดูการใช้งานจริง เรามาดูหลักการเขียน regular expression เพื่อให้สูตรเหล่านี้ทำงานได้กัน


⌨️ Regular Expression Basics

การเขียน regular expression แบ่งออกได้เป็น 4 กลุ่มหลัก ได้แก่:

  1. Special characters
  2. Character classes
  3. Quantifiers
  4. Others

.

🔣 (1) Special Characters

Regular expression ในกลุ่มนี้ เป็นอักขระพิเศษ โดยมี usage ต่างกันดังนี้:

No.CharacterForExample
1^…เริ่มต้นด้วย …^J หมายถึง คำที่ขึ้นต้นด้วย J
2…$ลงท้ายด้วย …s$ หมายถึง คำที่ลงท้ายด้วย s
3.แทนอักขระใด ๆ 1 ตัว (ยกเว้นการขึ้นบรรทัดใหม่)c.t ใช้หาคำเช่น cat, cmt, cPt, c7t
5\\…ใช้บอกว่า … ไม่ใช่ regular expression\\. หมายถึง ให้หาคำที่มี . แทนคำที่มีอักขระใด ๆ

.

🔣 (2) Character Classes

Regular expression ในกลุ่มนี้ ใช้แทนตัวอักษรและตัวเลข:

No.CharacterForExample
1[…]จับคู่ตัวอักษร ใน [][ABC] หมายถึง จับคู่คำที่มี A, B, หรือ C
2[A-Z]จับคู่ตัวอักษร A-Z พิมพ์ใหญ่จะได้คำ เช่น ANT, FGH, QPD, …
3[a-z]จับคู่ตัวอักษร a-z พิมพ์เล็กจะได้คำ เช่น ant, fgh, qpd, …
4[A-Za-z]จับคู่ตัวอักษร A-Z พิมพ์เล็กหรือใหญ่ก็ได้จะได้คำ เช่น aNt, Fgh, qpD, …
5[A-z]จับคู่ตัวอักษร a-z พิมพ์เล็กหรือใหญ่ก็ได้จะได้คำ เช่น aNt, Fgh, qpD, …
6[0-9]จับคู่ตัวตัวเลข 0-9จะได้คำ เช่น 012, 438, 507, …

.

🔣 (3) Quantifiers

Regular expression ในกลุ่มนี้ ใช้แทนจำนวนตัวอักขระที่ต้องการค้นหา:

No.CharacterForExample
1…*จับคู่อักขระ … จำนวนตั้งแต่ 0 ขึ้นไปA* จับคู่คำ เช่น A, An, Ant, ANts, …
2…+จับคู่อักขระ … จำนวนตั้งแต่ 1 ขึ้นไปA+ จับคู่คำ เช่น An, Ant, ANts, …
3…?จับคู่อักขระ … จำนวน 0 หรือ 1A? จับคู่คำ เช่น A, An, AT, …
5…{…}จับคู่อักขระ … ตามจำนวนใน {}.{5} หมายถึง จับคู่อักขระใด ๆ ที่มีความยาว 5 ตัว
4…{…, …}จับคู่อักขระ … ตามช่วงใน {}.{3, 5} หมายถึง จับคู่อักขระใด ๆ ที่มีความยาว 3 ถึง 5 ตัว

.

🔣 (4) Others

Regular expression อื่น ๆ นอกเหนือ 3 กลุ่มแรก:

No.CharacterForExample
1\\wจับคู่ A-Z ทั้งพิมพ์เล็กและใหญ่ หรือตัวเลขก็ได้
2\\dจับคู่ตัวตัวเลข 0-9
3\\bจับคู่ word boundary
4\\nจับคู่ new line
5\\sจับคู่ blank space
6(…)จับกลุ่ม regular expression

.

📃 Learn More

เราสามารถ regular expression อื่น ๆ ได้ที่ Syntax for Regular Expressions จาก Google


💪 Put It All Together

ตอนนี้ เรารู้จัก 3 สูตร REGEX และการเขียน regular expression แล้ว

เรามาดูตัวอย่างการใช้งานสูตร REGEX ในการทำงานกัน

.

ในตัวอย่าง เรามีข้อมูลพนักงาน 3 columns ได้แก่:

  1. Name
  2. Email
  3. Comment

Note: สามารถดูต้นฉบับได้ที่ Google Sheets

.

🗝️ (1) REGEXMATCH

สมมุติว่า เราต้องการเช็กว่า ใน comment มีคำว่า “comment” ไหม

เราสามารถใช้ REGEXMATCH ได้ดังนี้:

=REGEXMATCH(C3, "[Cc]omment")

ผลลัพธ์:

จะเห็นว่า เราได้ค่า TRUE และ FALSE กลับมา:

  • TRUE แสดงว่า text มีคำว่า “comment”
  • FALSE แสดงว่า text ไม่มีคำว่า “comment”

.

🗝️ (2) REGEXEXTRACT

เราต้องการดึงนามสกุลออกจากชื่อ

เราสามารถใช้ REGEXEXTRACT ช่วยได้:

=REGEXEXTRACT(A3, "\s([A-z]*)")

ผลลัพธ์:

.

🗝️ (3) REGEXREPLACE

เราต้องการเปลี่ยนอีเมลของทุกคนให้มี domain (เช่น @example.com และ @adams-mail.net) เป็น @email.com

เราสามารถใช้ REGEXREPLACE ช่วยได้:

=REGEXREPLACE(B3, "@[A-z.-]+\.[A-z]{2,}", "@email.com")

ผลลัพธ์:


📚 References

Comments

Leave a comment