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

แต่เราต้องการแยกข้อมูลเป็น columns เพื่อความสะดวกในการใช้งานต่อ เช่น:
- ID
- Name
- Address
แทนที่เรา copy-paste ข้อมูลลงทีละ column ด้วยตัวเอง เราสามารถใช้สูตร regular expression ของ Google Sheets ช่วยได้:

.
ในบทความนี้ เราจะทำความรู้จักกับ:
- 3 สูตร Google Sheets ที่ใช้ทำงานกับ regular expression
- การเขียน regular expression เพื่อใช้งาน 3 สูตรนี้
ถ้าพร้อมแล้วมาเริ่มกันเลย
👨🔬 Intro to REGEX Formulas
Google Sheets มี 3 สูตรสำหรับใช้ regular expression ซึ่งได้แก่:
| No. | Formula | For |
|---|---|---|
| 1 | REGEXMATCH() | เช็กหาคำที่ตรงกับ regular expression |
| 2 | REGEXEXTRACT() | ดึงคำที่ตรงกับ regular expression ออกมา |
| 3 | REGEXREPLACE() | แทนที่คำที่ตรงกับ regular expression |
โดยมีการเขียนดังนี้:
| No. | Formula | Syntax |
|---|---|---|
| 1 | REGEXMATCH() | REGEXMATCH(text, regular_expression) |
| 2 | REGEXEXTRACT() | REGEXEXTRACT(text, regular_expression) |
| 3 | REGEXREPLACE() | REGEXREPLACE(text, regular_expression, replacement) |
- text คือ ข้อมูล text ที่เราจะใช้ทำงาน
- regular_expression คือ regular expression ที่เราใช้กำหนดเงื่อนไข
- replacement คือ คำที่จะแทนที่คำที่ตรงกับ regular expression
.
ก่อนไปดูการใช้งานจริง เรามาดูหลักการเขียน regular expression เพื่อให้สูตรเหล่านี้ทำงานได้กัน
⌨️ Regular Expression Basics
การเขียน regular expression แบ่งออกได้เป็น 4 กลุ่มหลัก ได้แก่:
- Special characters
- Character classes
- Quantifiers
- Others

.
🔣 (1) Special Characters
Regular expression ในกลุ่มนี้ เป็นอักขระพิเศษ โดยมี usage ต่างกันดังนี้:
| No. | Character | For | Example |
|---|---|---|---|
| 1 | ^… | เริ่มต้นด้วย … | ^J หมายถึง คำที่ขึ้นต้นด้วย J |
| 2 | …$ | ลงท้ายด้วย … | s$ หมายถึง คำที่ลงท้ายด้วย s |
| 3 | . | แทนอักขระใด ๆ 1 ตัว (ยกเว้นการขึ้นบรรทัดใหม่) | c.t ใช้หาคำเช่น cat, cmt, cPt, c7t |
| 5 | \\… | ใช้บอกว่า … ไม่ใช่ regular expression | \\. หมายถึง ให้หาคำที่มี . แทนคำที่มีอักขระใด ๆ |
.
🔣 (2) Character Classes
Regular expression ในกลุ่มนี้ ใช้แทนตัวอักษรและตัวเลข:
| No. | Character | For | Example |
|---|---|---|---|
| 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. | Character | For | Example |
|---|---|---|---|
| 1 | …* | จับคู่อักขระ … จำนวนตั้งแต่ 0 ขึ้นไป | A* จับคู่คำ เช่น A, An, Ant, ANts, … |
| 2 | …+ | จับคู่อักขระ … จำนวนตั้งแต่ 1 ขึ้นไป | A+ จับคู่คำ เช่น An, Ant, ANts, … |
| 3 | …? | จับคู่อักขระ … จำนวน 0 หรือ 1 | A? จับคู่คำ เช่น A, An, AT, … |
| 5 | …{…} | จับคู่อักขระ … ตามจำนวนใน {} | .{5} หมายถึง จับคู่อักขระใด ๆ ที่มีความยาว 5 ตัว |
| 4 | …{…, …} | จับคู่อักขระ … ตามช่วงใน {} | .{3, 5} หมายถึง จับคู่อักขระใด ๆ ที่มีความยาว 3 ถึง 5 ตัว |
.
🔣 (4) Others
Regular expression อื่น ๆ นอกเหนือ 3 กลุ่มแรก:
| No. | Character | For | Example |
|---|---|---|---|
| 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 ได้แก่:
- Name
- 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")
ผลลัพธ์:

