Hướng dẫn viết biểu thức chính quy trong lập trình
Biểu thức chính quy (regular expression hay regex) là một công cụ mạnh mẽ để tìm kiếm, phân tích và thao tác với chuỗi văn bản. Việc nắm vững cách viết và sử dụng biểu thức chính quy có thể giúp bạn thực hiện các tác vụ như tìm kiếm văn bản, thay thế và phân tích cú pháp. Dưới đây là hướng dẫn chi tiết về cách viết biểu thức chính quy.
1. Cơ Bản về Biểu Thức Chính Quy
Biểu thức chính quy là một chuỗi ký tự mô tả mẫu của một tập hợp các chuỗi văn bản. Biểu thức chính quy có thể rất đơn giản hoặc rất phức tạp tùy thuộc vào nhu cầu của bạn.
2. Cú Pháp Cơ Bản
2.1. Các Ký Tự Đặc Biệt
.
: Khớp với bất kỳ ký tự nào (trừ ký tự xuống dòng).^
: Khớp với bắt đầu của chuỗi.$
: Khớp với kết thúc của chuỗi.\
: Escape ký tự đặc biệt, ví dụ\.
khớp với dấu chấm thực sự.
2.2. Ký Tự và Nhóm
[abc]
: Khớp với bất kỳ ký tự nào trong tập hợp (a, b, hoặc c).[^abc]
: Khớp với bất kỳ ký tự nào không nằm trong tập hợp (không phải a, b, hoặc c).[a-z]
: Khớp với bất kỳ ký tự nào trong dải từ a đến z (chữ cái thường).[0-9]
: Khớp với bất kỳ ký tự số nào.
2.3. Các Tập Hợp và Nhóm
()
: Nhóm các ký tự lại với nhau. Ví dụ,(abc)+
khớp với một hoặc nhiều lần “abc”.|
: Hoặc. Ví dụ,cat|dog
khớp với “cat” hoặc “dog”.
2.4. Các Ký Tự Lặp
*
: Khớp với 0 hoặc nhiều lần lặp lại của ký tự hoặc nhóm trước đó.+
: Khớp với 1 hoặc nhiều lần lặp lại của ký tự hoặc nhóm trước đó.?
: Khớp với 0 hoặc 1 lần lặp lại của ký tự hoặc nhóm trước đó.{n}
: Khớp với chính xác n lần lặp lại. Ví dụ,a{3}
khớp với “aaa”.{n,}
: Khớp với n hoặc nhiều hơn. Ví dụ,a{2,}
khớp với “aa”, “aaa”, “aaaa”, …{n,m}
: Khớp với từ n đến m lần lặp lại. Ví dụ,a{2,4}
khớp với “aa”, “aaa”, hoặc “aaaa”.
2.5. Các Ký Tự Đặc Biệt
\d
: Khớp với bất kỳ ký tự số nào (tương đương[0-9]
).\D
: Khớp với bất kỳ ký tự nào không phải số.\w
: Khớp với bất kỳ ký tự từ chữ cái, số, hoặc gạch dưới (tương đương[a-zA-Z0-9_]
).\W
: Khớp với bất kỳ ký tự nào không phải chữ cái, số, hoặc gạch dưới.\s
: Khớp với bất kỳ ký tự khoảng trắng nào (như khoảng trắng, tab, xuống dòng).\S
: Khớp với bất kỳ ký tự nào không phải khoảng trắng.
3. Ví Dụ và Ứng Dụng
3.1. Tìm Kiếm Email
Biểu thức chính quy để tìm kiếm một địa chỉ email đơn giản:
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b
\b
: Ranh giới từ.[A-Za-z0-9._%+-]+
: Phần tên người dùng (có thể chứa chữ cái, số, và các ký tự đặc biệt).@
: Ký tự ‘@’.[A-Za-z0-9.-]+
: Phần tên miền (có thể chứa chữ cái, số, dấu chấm và dấu gạch ngang).\.[A-Z|a-z]{2,7}
: Phần đuôi miền (như.com
,.org
).
3.2. Tìm Kiếm Số Điện Thoại
Biểu thức chính quy để tìm kiếm số điện thoại (định dạng đơn giản):
\(\d{3}\) \d{3}-\d{4}
\(\d{3}\)
: Khớp với mã vùng trong dấu ngoặc đơn, ví dụ (123).\d{3}-\d{4}
: Khớp với ba chữ số theo sau là dấu gạch nối và bốn chữ số.
3.3. Tìm Kiếm Mật Khẩu
Biểu thức chính quy để kiểm tra mật khẩu có ít nhất một chữ cái, một số và có độ dài từ 8 đến 20 ký tự:
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,20}$
^
: Bắt đầu của chuỗi.(?=.*[A-Za-z])
: Đảm bảo có ít nhất một chữ cái.(?=.*\d)
: Đảm bảo có ít nhất một số.[A-Za-z\d]{8,20}
: Đảm bảo độ dài từ 8 đến 20 ký tự.$
: Kết thúc của chuỗi.
4. Công Cụ và Tài Nguyên
- Regex101: Trang web giúp bạn kiểm tra và kiểm tra biểu thức chính quy với các mô tả và phân tích cú pháp.
- Regexr: Cung cấp giao diện tương tác để xây dựng và thử nghiệm các biểu thức chính quy.
5. Lưu Ý
- Biểu thức chính quy có thể khác nhau giữa các ngôn ngữ lập trình và công cụ, vì vậy hãy kiểm tra tài liệu cụ thể.
- Cẩn thận với các biểu thức chính quy quá phức tạp, vì chúng có thể ảnh hưởng đến hiệu suất.
Việc học cách viết và sử dụng biểu thức chính quy có thể giúp bạn xử lý văn bản và dữ liệu một cách hiệu quả hơn. Bằng cách nắm vững các khái niệm cơ bản và thực hành với các ví dụ thực tế, bạn sẽ trở nên thành thạo trong việc sử dụng công cụ mạnh mẽ này.