Mở đầu
Trong bài này chúng ta đi tìm hiểu các tạo ra định nghĩa 1 đoạn regex, bắt đầu từ các điều cơ bản nhé.
Nguyên tắc chung
-
So sánh lần lượt các kí tự liền nhau từ trái sang phải.
Ví dụ:
tức là tìm kiếm các cụm từ có chữ "D", ngay sau đó là chữ E, tiếp sau đó là chữ P và lần lượt tới hết.DEPTRAI
-
Nếu thỏa mãn cả cụm DEPTRAI liền nhau thì được coi là khớp.
Anchors (điểm neo)
-
Đầu dòng: ^
Ví dụ có đoạn text:Anh Nguyễn Văn A"
sẽ khớp với chữ "Anh" trong câu trên.^Anh
-
Cuối dòng: $
Ví dụ có đoạn text:Anh Nguyễn Văn A"
Mặc dù có 2 chữ A nhưng với
sẽ khớp với chữ "A" ở cuối câu.A$
Quantifiers (số lượng)
-
0 hoặc nhiều kí tự đứng trước: *
tức là theo sau từ DEPTRAI là 0 hoặc nhiều kí tự X.DEPTRAIX*
- Sẽ khớp với:
DEPTRAI
DEPTRAIX
DEPTRAIXX
- Sẽ khớp với:
-
1 hoặc nhiều kí tự đứng trước: +
tức là theo sau từ DEPTRAI là 1 hoặc nhiều kí tự X.DEPTRAIX+
- Sẽ khớp với:
DEPTRAIX
DEPTRAIXX - Không khớp với:
DEPTRAI
- Sẽ khớp với:
-
0 hoặc 1 kí tự đứng trước: ?
tức là theo sau từ DEPTRAI là 0 hoặc 1 kí tự X.DEPTRAIX+
-
Sẽ khớp với:
DEPTRAI
DEPTRAIX -
Không khớp với:
DEPTRAIXX
(Thật ra là chỉ khớp với "DEPTRAIX" trong đoạn "DEPTRAIXX")
-
-
Rank (có từ mấy kí tự tới mấy kí tự): {}
tức là theo sau từ DEPTRAI là từ 0 tới 1 kí tự X.DEPTRAIX{0,1}
-
Sẽ khớp với:
DEPTRAI
DEPTRAIX -
Không khớp với:
DEPTRAIXX
(Thật ra là khớp với "DEPTRAIX" trong đoạn "DEPTRAIXX")
Chú ý: {} luôn lấy tham lam (greedy) - lấy nhiều nhất có thể.
Trong trường hợp này (DEPTRAIXX) có 2 option phù hợp (DEPTRAI và DEPTRAIX) nhưng vì {} là tham lam nên nó lấy cái nhiều hơn (DEPTRAIX).
Khá là khoai sắn nhưng hợp lý phải không nào. -
Group (Nhóm): ()
Nhóm 1 loạt các kí tự vào thành 1 nhóm để xử lý giống như 1 kí tự
tức là nhóm cụm từ "DEPTRAI" thành 1 nhóm và tìm kiếm 1 hoặc nhiều cụm từ "DEPTRAI" liên tiếp.(DEPTRAI)+
- Sẽ khớp với:
DEPTRAI
DEPTRAIDEPTRAI -
Không khớp với:
DEPTRAIX
(Thật ra là khớp với "DEPTRAI" trong đoạn "DEPTRAIX")
OR operator (Toán tử OR): | hoặc []
-
kí hiệu |
tức là tìm kiếm các kí tự là a hoặc b(a|b)
sẽ khớp với chữ a hoặc b trong cụm "abcde" -
kí hiệu []
: tức là tìm kiếm các kí tự là a hoặc b[ab]
`- giống
`(a|b)
sẽ khớp với chữ a hoặc b trong cụm "abcde"
Tạm thế này đã, kẻo tẩu hỏa nhập ma.
Leave a Reply