I. Giới thiệu
REGEXMATCH, REGEXEXTRACT, và REGEXREPLACE các hàm sử dụng biểu thức chính quy để tìm, trích xuất hoặc thay thế văn bản trong một tập dữ liệu.
II. Về các hàm
REGEXMATCH
- Chức năng: Kiểm tra xem văn bản có khớp với biểu thức chính quy hay không và trả về một Boolean (TRUE hoặc FALSE).
- Cú pháp: =REGEXMATCH(văn bản, biểu thức chính quy)
- Đối số:
- Văn bản (bắt buộc): Văn bản cần được kiểm tra
- Cụm từ thông dụng (bắt buộc): Văn bản cần được khớp
- Ví dụ: = REGEXMATCH("Sheets", "S.e") sẽ trả về TRUE
REGEXEXTRACT
- Chức năng: Trích xuất văn bản khớp với biểu thức chính quy
- Cú pháp: = REGEXEXTRACT(văn bản, biểu thức chính quy)
- Đối số:
- Văn bản (bắt buộc): Văn bản cần được kiểm tra
- Cụm từ thông dụng (bắt buộc): Văn bản cần được trích xuất
- Ví dụ: = REGEXEXTRACT("abcedfg", "c.*f") trích xuất tất cả văn bản từ c đến f (bao gồm c, f) trong chuỗi "abcedfg", sẽ trả về cedf.
REGEXREPLACE
- Chức năng: Khớp với một chuỗi văn bản và thay thế nó bằng một chuỗi văn bản khác
- Cú pháp: = REGEXREPLACE(văn bản, biểu thức chính quy, văn bản thay thế)
- Đối số:
- Văn bản (bắt buộc): Văn bản cần được kiểm tra
- Cụm từ thông dụng (bắt buộc): Chuỗi văn bản cần được thay thế
- Văn bản thay thế (bắt buộc): Văn bản sẽ thay thế chuỗi văn bản đã chỉ định
- Ví dụ: = REGEXREPLACE("abcedfg", "a.*d", "xyz") sẽ trả về xyzfg
III. Cú pháp cụm từ thông dụng
Những chức năng này dựa vào biểu thức chính quy để thực thi, nên việc hiểu cách viết cụm từ thông dụng là rất quan trọng.
1. Ví dụ
Hãy tưởng tượng bạn cần trích xuất địa chỉ email từ một tập dữ liệu văn bản lớn. Mặc dù địa chỉ email tuân theo một định dạng chuẩn, nhưng độ dài và các loại ký tự được hỗ trợ ở các phần khác nhau thì lại thay đổi. Dưới đây là một cách mà biểu thức chính quy có thể được sử dụng để mô tả một địa chỉ email:
250px|700px|reset
Ban đầu trông hàm có vẻ đáng sợ, nhưng nó sẽ trở nên rõ ràng hơn nhiều sau khi bạn đã đi qua phần Siêu kí tự. Dưới đây là một bản phân tích cơ bản:
- Phần 1: Mô tả tiền tố email: Một chuỗi chứa chữ cái hoặc số. Dấu + ở đây cho biết độ dài không cố định. Hậu tố email cũng tuân theo định dạng này, vì vậy biểu thức giống nhau được sử dụng sau ký hiệu (@).
- Phần 2: Chỉ định rằng chức năng nên tìm kiếm một dấu chấm (.) trong hậu tố email (ví dụ.com). Vì dấu chấm phục vụ một chức năng đặc biệt trong cú pháp, một ký tự thoát, dấu gạch chéo (\), phải được thêm thành công vào phía trước. Lưu ý rằng ký hiệu (@) trong ví dụ trước không phải là một ký tự đặc biệt, vì vậy không cần ký tự thoát.
- Phần 3: Mô tả nửa sau của hậu tố email: Một chuỗi bao gồm nhiều chữ cái viết thường (như các miền email ".com").
Giống như có nhiều cách để giải quyết các bài toán toán học, có nhiều cách để viết một biểu thức chính quy để mô tả cùng một loại nội dung. Cách trên chỉ là một ví dụ. Để hiểu hơn về việc viết biểu thức chính quy, chúng tôi sẽ đi sâu hơn vào cú pháp của nó:
2. Khớp chính xác
Chức năng sẽ trả về một kết quả khớp chính xác nếu không có ký tự đặc biệt nào được sử dụng. Ví dụ =REGEXMATCH("Sheets", "se") có nghĩa là chúng tôi đang tìm kiếm "se" trong "Sheets," điều này sẽ trả về FALSE vì không tìm thấy khớp chính xác của "se".
3. Ký tự đặc biệt
Ký tự đặc biệt là những ký tự có ý nghĩa đặc biệt trong cụm từ thông dụng. Trong ví dụ trên, nếu chúng tôi thay đổi biểu thức nhân viên chính thức thành "S.e" để công thức trở thành =REGEXMATCH("Sheets", "S.e"), thì TRUE sẽ được trả về thay vì vì một dấu chấm (.) là một ký tự đặc biệt đại diện cho bất kỳ ký tự nào không phải là dấu ngắt dòng. Và vì "Sheets" chứa "She", công thức với "S.e" sẽ trả về TRUE.
Quy tắc khớp: Theo mặc định từ trái sang phải. Nếu số lần lặp lại không được chỉ định, chỉ có bộ giá trị đầu tiên khớp với biểu thức nhân viên chính thức sẽ được trả về.
4. Tìm xung quanh
Tìm trước và tìm sau, hay còn gọi là tìm xung quanh hoặc khẳng định, được sử dụng để kiểm tra xem phần đầu và phần cuối của một chuỗi có đáp ứng điều kiện cụm từ thông dụng hay không. Hàm không lấy đi chuỗi, mà trả về các kết quả thay thế. Điều kiện Tìm xung quanh cần được đặt trong dấu ngoặc đơn. Hàm hỗ trợ hai phương pháp sau đây:
5. Nhóm và bắt (sử dụng dấu ngoặc)
Nội dung được đặt trong dấu ngoặc sẽ trở thành một nhóm. Nhóm bao gồm nhóm chụp và nhóm không chụp:
- Nhóm chụp được sử dụng để khớp và chụp kết quả trong dấu ngoặc.
- Nhóm không chụp được sử dụng để khớp kết quả mà không chụp, có nghĩa là chúng không thể được sử dụng cho các phép tính phụ.
Dưới đây là một số mẹo nhóm thực tế:
- Nhóm nhiều:
Khi sử dụng REGEXEXTRACT để trích xuất nội dung, nhiều cột có thể được trích xuất thông qua nhiều nhóm cùng một lúc. Như hình dưới đây, nội dung được nhóm thành ba cột thông qua ba bộ dấu ngoặc.
250px|700px|reset
Hơn nữa, các nhóm có thể được lồng vào nhau (như hình dưới đây). Nhóm lồng nhau có thể được chia thành 4 cột.
250px|700px|reset
- Tham chiếu trở lại:
Nhập \n sau một nhóm (n phải là một số dương) để hoạt động như một tham chiếu giá trị cho nhóm này, vì vậy bạn có thể sử dụng (.)\1 để khớp hai số lặp lại liên tiếp.