---
title: REGEXEXTRACT – ดึงข้อความด้วย Regular Expression
url: https://www.thepexcel.com/functions/google-sheets/text/regexextract-google-sheets/
type: function-explainer
program: Google Sheets
syntax: "=REGEXEXTRACT(text, regular_expression)"
date: 2025-12-13
updated: 2025-12-23
scores:
  popularity: 6
  difficulty: 6
  usefulness: 6
---

# REGEXEXTRACT – ดึงข้อความด้วย Regular Expression

> REGEXEXTRACT เป็นฟังก์ชันสำหรับดึงข้อความย่อย (Substring) ที่ตรงกับรูปแบบ Regular Expression ที่กำหน

## คำอธิบาย

REGEXEXTRACT เป็นฟังก์ชันสำหรับดึงข้อความย่อย (Substring) ที่ตรงกับรูปแบบ Regular Expression ที่กำหนด เหมาะสำหรับการทำ Data Cleaning ขั้นสูงที่ฟังก์ชันจัดการข้อความปกติทำไม่ได้

## Syntax

```excel
=REGEXEXTRACT(text, regular_expression)
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| text | Yes | Text |  | ข้อความหรือเซลล์ที่ต้องการดึงข้อมูล |
| regular_expression | Yes | Text |  | รูปแบบ Regex ที่ต้องการค้นหา (ต้องอยู่ในเครื่องหมายคำพูด) หากมีกลุ่มวงเล็บ () จะคืนค่าเฉพาะในวงเล็บ ถ้าไม่มีวงเล็บจะคืนเฉพาะส่วนที่ตรงกับรูปแบบทั้งหมด |

## เคสการใช้งาน

### ดึงโดเมนจากอีเมล

แยกชื่อเว็บไซต์ (Domain) ออกจากที่อยู่อีเมล

### ดึงตัวเลขจากข้อความ

แยกรหัสไปรษณีย์หรือเบอร์โทรศัพท์ที่ปนอยู่กับข้อความ

### แยกชื่อไฟล์จาก URL

ดึงชื่อไฟล์หรือนามสกุลไฟล์จาก URL ยาวๆ

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: ดึงโดเมนอีเมล

```excel
=REGEXEXTRACT("support@thepexcel.com", "@(.+)")
```

**ผลลัพธ์:** `thepexcel.com`

รูปแบบ @(.+) = ค้นหา @ และดึงข้อความทั้งหมดหลัง @ (ในวงเล็บ) ออกมา วงเล็บบ่งบอกว่า "ดึงเฉพาะส่วนนี้"

### 2. ตัวอย่างที่ 2: ดึงเฉพาะตัวเลข (Order Number)

```excel
=REGEXEXTRACT("Order #12345 confirmed", "\d+")
```

**ผลลัพธ์:** `12345`

`\d+` = ตัวเลขตั้งแต่ 1 ตัวขึ้นไป (ไม่มีวงเล็บ ดึงทั้งรูปแบบ) ได้ตัวเลขแรกที่เจอ

### 3. ตัวอย่างที่ 3: ดึงปีจากวงเล็บ

```excel
=REGEXEXTRACT("The Matrix (1999)", "\((\d{4})\)")
```

**ผลลัพธ์:** `1999`

`\(` = วงเล็บจริง (ต้อง escape), `(\d{4})` = ตัวเลข 4 หลัก (ในวงเล็บจึงดึงเฉพาะนี้), `\)` = วงเล็บปิด

### 4. ตัวอย่างที่ 4: ดึงเบอร์โทรศัพท์

```excel
=REGEXEXTRACT("Call: 081-234-5678 ext 100", "\d{3}-\d{3}-\d{4}")
```

**ผลลัพธ์:** `081-234-5678`

`\d{3}` = 3 ตัวเลข, `-` = ขีด, `\d{3}` = 3 ตัวเลข, `-` = ขีด, `\d{4}` = 4 ตัวเลข (รูปแบบไทยทั่วไป)

### 5. ตัวอย่างที่ 5: ดึงปีจากข้อมูลสับสน

```excel
=REGEXEXTRACT("Vintage: 1999 or 2001", "[0-9]+")
```

**ผลลัพธ์:** `1999`

`[0-9]+` = เลขตั้งแต่ 1 ตัวขึ้นไป (เทียบเท่า `\d+`) ได้เลขแรก (1999) ถ้าอยากได้ 2001 ต้องใช้ REGEXMATCH หรือ REGEXREPLACE

### 6. ตัวอย่างที่ 6: ดึงจำนวนเงินจากข้อความ

```excel
=VALUE(REGEXEXTRACT("Price: $1,234.50", "\d+(?:,\d{3})*(?:\.\d{2})"))
```

**ผลลัพธ์:** `1234.5`

`\d+` = เลข, `(?:,\d{3})*` = คอมม่าตามด้วยเลข 3 ตัว (ซ้ำหลาย ๆ ครั้ง), `(?:\.\d{2})` = จุดตามด้วยเลข 2 ตัว VALUE() แปลงเป็นตัวเลข

## หมายเหตุเพิ่มเติม

- ใช้ IFERROR เสมอ เพราะถ้าไม่เจอรูปแบบจะ error #N/A เช่น =IFERROR(REGEXEXTRACT(A2, "\d+"), "N/A")

- ทดสอบ Regex ก่อนที่ regexr.com หรือ regex101.com แล้วคัดลอกมาใช้ใน Google Sheets (ตรวจสอบสัญลักษณ์ escape)

- ร่วมกับ ARRAYFORMULA ได้ =ARRAYFORMULA(REGEXEXTRACT(A2:A10, "รูปแบบ")) เพื่อดึงจากหลายเซลล์ "คราวเดียว"

- ใช้วงเล็บ () (capture group) เพื่อดึงเฉพาะส่วนที่ต้องการ ไม่ใส่วงเล็บ จะดึงทั้งรูปแบบ

- ใช้ VALUE() ครอบหากต้องการแปลงผลลัพธ์เป็นตัวเลข เช่น =VALUE(REGEXEXTRACT(A2, "\d+"))

- ใช้ REGEXREPLACE ได้ถ้าต้องการเปลี่ยนแปลงข้อความแทนการดึงเอา เช่น ลบ space ทั้งหมด

- ส่วนมาก Regex ในฟังก์ชันจะ case-sensitive (แยกความแตกต่างระหว่าง a กับ A) ถ้าต้อง case-insensitive ให้ใช้ (?i) prefix

- ใช้ ARRAYFORMULA กับช่วงเล็ก ๆ จะเร็ว แต่ช่วงใหญ่อาจชะลอ Spreadsheet ลองใช้ REGEXMATCH สำหรับตรวจสอบก่อนแล้วตัดตัวเลือก

## คำถามที่พบบ่อย

**Q: ต่างกับ REGEXREPLACE ยังไง?**

REGEXEXTRACT = ดึง (extract) ส่วนที่ตรงกับรูปแบบ | REGEXREPLACE = แทนที่ (replace) ส่วนที่ตรงกับรูปแบบด้วยข้อความใหม่

**Q: REGEXEXTRACT ใน Excel มีไหม?**

Excel 365 เพิ่งมีฟังก์ชัน REGEXEXTRACT ให้ใช้แล้ว (Public Preview ปี 2024) ทำงานคล้าย ๆ กับของ Google Sheets แต่ถ้าใช้ Excel รุ่นเก่ากว่าต้องใช้ VBA หรือ Python in Excel

**Q: ถ้าไม่เจอรูปแบบที่กำหนดจะเป็นอย่างไร?**

จะคืนค่า error #N/A แนะนำให้ครอบด้วย IFERROR เช่น `=IFERROR(REGEXEXTRACT(A2, "\d+"), "ไม่พบ")` เพื่อจัดการกรณีไม่พบข้อมูล

**Q: ไม่เก่ง Regex จะเขียนได้อย่างไร?**

ใช้ AI ช่วย! บอก ChatGPT/Claude/Gemini ว่า "Write a regex to extract [สิ่งที่ต้องการ]" หรือทดสอบที่ regexr.com ซึ่งมีคำอธิบายแบบ visual

**Q: Google Sheets ใช้ Regex แบบไหน?**

ใช้ RE2 (Google's regex engine) คล้าย JavaScript/PCRE แต่ไม่รองรับ lookahead `(?=)` และ lookbehind `(?

**Q: หากข้อความมีหลายรูปแบบตรงกัน REGEXEXTRACT ดึงอันไหน?**

ดึง "ครั้งแรก" ที่เจอเท่านั้น ถ้า "1999 or 2001" ดึงได้ 1999 ถ้าต้องดึงทั้งหมด ต้องใช้ REGEXMATCH (array formula) หรือ REGEXREPLACE

## แหล่งข้อมูลเพิ่มเติม

- [Google Sheets Help: REGEXEXTRACT](https://support.google.com/docs/answer/3098244) _(official)_
- [Google Sheets Help: Regular Expression Syntax](https://support.google.com/docs/table/25273) _(official)_
- [RegExr - Learn & Test Regex (Visual)](https://regexr.com/) _(article)_
- [Regex101 - Advanced Regex Tester](https://regex101.com/) _(article)_
- [RE2 Syntax Reference (Google Sheets)](https://github.com/google/re2/wiki/Syntax) _(article)_
- [Ben Collins: Google Sheets Regex Formulas](https://www.benlcollins.com/spreadsheets/google-sheets-regex-formulas/) _(article)_

---

_Source: [https://www.thepexcel.com/functions/google-sheets/text/regexextract-google-sheets/](https://www.thepexcel.com/functions/google-sheets/text/regexextract-google-sheets/)_
