Bảng nhanh cơ bản về regex
Biểu thức chính quy (regex) là một mẫu khớp với văn bản. Mỗi ký hiệu, gọi là token, thay đổi cách mẫu hoạt động. Trang dưới đây liệt kê các token hay dùng nhất, kèm nghĩa đơn giản và ví dụ nhỏ có thể sao chép để thử.
| Token | Ý nghĩa | Ví dụ |
|---|---|---|
| . | Matches any single character except newline. | a.c matches abc, a c |
| * | Matches the preceding token zero or more times. | ab* matches a, abb |
| + | Matches the preceding token one or more times. | ab+ matches ab, abb |
| ? | Makes the preceding token optional (zero or one). | colou?r matches color, colour |
| [] | Character set: matches any one character inside. | [aeiou] matches any vowel |
| [^] | Negated set: matches any character NOT inside. | [^0-9] matches any non-digit |
| \d | Matches any digit (0-9). | \d+ matches 42, 007 |
| \w | Matches any word character (a-z, A-Z, 0-9, _). | \w+ matches hello_1 |
| \s | Matches any whitespace (space, tab, newline). | a\sb matches a b |
| ^ | Anchors the match to the start of a line/string. | ^Hello matches start of string |
| $ | Anchors the match to the end of a line/string. | world$ matches end of string |
| | | Alternation: matches the pattern on either side. | cat|dog matches cat or dog |
| () | Groups a sub-pattern (and captures it). | (ab)+ matches ab, abab |
| {n,m} | Quantifier: match the preceding token n to m times. | a{2,4} matches aa, aaaa |
| (?i) | Inline flag: makes the pattern case-insensitive. | (?i)hello matches HELLO |
Ghi chú
- Hầu hết token mất ý nghĩa đặc biệt bên trong tập ký tự [ ]. Ví dụ, . trong [] chỉ khớp với một dấu chấm bình thường.
- Dấu gạch chéo ngược (\) là ký tự thoát: biến token đặc biệt thành ký tự literal và ngược lại.
- Các engine khác nhau: Python, JavaScript, PCRE và Golang chia sẻ phần lớn token, nhưng cờ và hỗ trợ look-around thì khác nhau.
Câu hỏi thường gặp
- Dấu chấm (.) khớp với gì?
- Mặc định dấu chấm khớp với bất kỳ ký tự nào trừ ký tự xuống dòng. Để khớp đúng dấu chấm, bạn phải escape thành \.
- Sự khác biệt giữa * và + là gì?
- Dấu sao * khớp token trước không hoặc nhiều lần, nên 'ab*' cũng khớp với 'a'. Dấu cộng + cần ít nhất một lần, khớp 'ab' nhưng không khớp riêng 'a'.
- Làm sao khớp một chữ số hay ký tự từ?
- Dùng \d cho bất kỳ chữ số nào (0-9) và \w cho ký tự từ (chữ, số, gạch dưới). Phủ định là \D và \W.
- ^ và $ dùng để làm gì?
- ^ neo vị trí khớp tại đầu chuỗi hoặc dòng; $ tại cuối. Cùng nhau, ^mẫu$ buộc toàn bộ chuỗi phải khớp.