CHAPTER 2 REGULAR EXPRESSION BIU THC CHNH QUY
CHAPTER 2: REGULAR EXPRESSION (BIỂU THỨC CHÍNH QUY) C# 2010 for programmer chapter 16 in page 567
Nội dung § Khái niệm và vai trò của biểu thức chính qui. § Các class hỗ trợ trong C# § Lớp ký tự dùng trong biểu thức chính qui và các ví dụ: Ký tự định dạng cho từng loại văn bản. Quantifiers Group, phép Or
1 - Regular Expression là gì? § Là công cụ ngôn ngữ mạnh, là một phần của các ngôn ngữ lập trình hiện đại. § Regular expression là chuỗi mẫu chứa các ký tự định dạng dùng để xác định xem văn bản có thỏa định dạng đưa ra không nhằm đảm bảo các chuỗi có định dạng chung nào đó. Ví dụ: kiểm tra ZIP code, địa chỉ email, họ tên hợp lệ. . .
2. Các class hỗ trợ: §. NET framework cung cấp các classes trong System. Text. Regular. Expression: 1. Regex class: 1. Có phương thức Match (static hoặc instance) trả về kết quả là các so trùng kiểu class Match 2. Matches trả về Match. Collection object 2. Match class 1. Kiểu chứa một kết quả match tìm thấy. 2. To. String() trả về chuỗi con match với regular expression 3. Match. Collection class 1. Kiểu chứa tập nhiều match tìm thấy.
Sử dụng Regex để tìm kiếm: Regex regex. Object= new Regex(Chuỗi_Mẫu); Match match. Object= regex. Object. Match(Chuỗi_Văn_Bản); Match. Collection matchs. Obj=regex. Object. Matches(Chuỗi_Văn_Bản); Match: Khi tìm thấy chuỗi con thỏa Chuỗi_Mẫu trong Chuỗi_Văn_Bản thì trả về match. Object chứa thông tin chuỗi con này. Matches: Khi tìm thấy các chuỗi con thỏa Chuỗi_Mẫu trong Chuỗi_Văn_Bản thì trả về Match. Collection object chứa thông tin các chuỗi con này.
Ví dụ: so sánh việc dùng regular expression // Nếu chỉ sử dụng thuật toán string zip = “ 1234 C”; bool is. Good. Zip = true; foreach (char ch in zip) { if (!char. Is. Digit(ch)) { is. Good. Zip = false; break; } } //dùng regular expression Tạo object kiểu class string search. String = “ 1234 C”; string reg. Ex. String Regex = @”ddd”; Regex rex = new Regex(reg. Ex. String); bool is. Match = rex. Is. Match(search. String); Gọi phương thức Is. Match //Cần US Zip code thì thay bằng: string search. String = “ 12345 -6789”; string reg. Ex. String = @”ddddd”;
Ví dụ: dùng match và matches Match "e" in test. String Match "e" multiple times
2.
Ví dụ: Dùng character class ". *" match nhóm ký tự bất kỳ trừ newline
3. Quantifier character class § Có thể dùng lớp ký tự định lượng. § Ví dụ: US Zip code: string reg. Ex. String = @”d{5}-d{4}”; @ la chuoi thi d neu khong phai \d
3. Quantifier character class § Còn được gọi là metacharacter
Ví dụ: Dùng static method Matches p xuất hiện 0 hoặc 1 lần
4. Greedy and lazy § Quantifier đều theo nguyên tắc greedy string test. String = "123456789"; Console. Write("{0} n", Regex. Match(test. String, @"d{5, 10}")); § Nếu có ? sau ký tự quantifier nó trở nên lazy string test. String = "123456789"; Console. Write("{0} n", Regex. Match(test. String, @"d{5, 10}? "));
Ví dụ: greedy & lazy find sequences of word characters- lazy
5. Group, Optional Ngoài ra còn có một số character class khác: Ký tự So trùng ^ Bắt buộc so trùng từ đầu chuỗi input $ Bắt buộc so trùng đến kết thúc chuỗi input (exp 1|exp 2) Hoặc, ý nghĩa so trùng với biểu thức chính quy exp 1 hoặc exp 2 vd: Hi (John|Jane) () Tạo group nhiều ký tự định dạng vd: d[a-z]+ khác với (d[a-z])+ character class subtraction vd: "[d-[4]]" mọi ký số trừ số 4
Ví dụ: subtraction character (khác với range character)
Ví dụ: validating input data
Ví dụ: validating input data
Ví dụ: validating input data
Ví dụ: validating input data Bắt đầu là ký tự hoa, rồi nhóm ký tự chữ cái, rồi có thể lặp lại nhiều lần khoảng trắng rồi ký tự hoa và nhóm ký tự chữ cái. Bắt đầu nhóm ký tự số, rồi khoảng trắng, rồi nhóm ký tự chữ cái hoặc nhóm ký tự chữ cái rồi khoảng trắng rồi nhóm ký tự chữ cái.
Ví dụ: validating input data
Ví dụ: validating input data định dạng gồm các ký số theo mẫu xxx-xxxx với ký số đầu nhóm khác 0, Lưu ý ^ và $
Ví dụ: validating input data
Ví dụ: validating input data
Ví dụ: validating input data
6. Phương thức Replace, Split String Regex. Replace(String input, String pattern, String replacement) Trả về chuỗi kết quả là chuỗi sau khi đã thay chuỗi con tìm thấy đúng pattern trong input bằng chuỗi replacement. String[] Regex. Split(String input, String pattern) Trả về các chuỗi con được split từ chuỗi input tại các vị trí chuỗi con thỏa pattern.
- Slides: 27