Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 27 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
27
Dung lượng
623 KB
Nội dung
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 vai trị biểu thức qui Các class hỗ trợ C# Lớp ký tự dùng biểu thức qui ví dụ: Ký tự định dạng cho loại văn Quantifiers Group, phép Or - Regular Expression gì? Là cơng cụ ngơn ngữ mạnh, phần ngơn ngữ lập trình đại Regular expression chuỗi mẫu chứa ký tự định dạng dùng để xác định xem văn có thỏa định dạng đưa khơng nhằm đảm bảo chuỗi có định dạng chung Ví dụ: kiểm tra ZIP code, địa email, họ tên hợp lệ Các class hỗ trợ: NET framework cung cấp classes System.Text.RegularExpression: Regex class: Có phương thức Match (static instance) trả kết so trùng kiểu class Match Matches trả MatchCollection object Match class Kiểu chứa kết match tìm thấy ToString() trả chuỗi match với regular expression MatchCollection class Kiểu chứa tập nhiều match tìm thấy Sử dụng Regex để tìm kiếm: Regex regexObject= new Regex(Chuỗi_Mẫu); Match matchObject= regexObject.Match(Chuỗi_Văn_Bản); MatchCollection matchsObj=regexObject.Matches(Chuỗi_Văn_Bản); Match: Khi tìm thấy chuỗi thỏa Chuỗi_Mẫu Chuỗi_Văn_Bản trả matchObject chứa thơng tin chuỗi Matches: Khi tìm thấy chuỗi thỏa Chuỗi_Mẫu Chuỗi_Văn_Bản trả MatchCollection object chứa thơng tin chuỗi Ví dụ: so sánh việc dùng regular expression // Nếu sử dụng thuật toán string zip = “1234C”; bool isGoodZip = true; foreach (char ch in zip) { if (!char.IsDigit(ch)) { isGoodZip = false; break; } } //dùng regular expression Tạo object kiểu class string searchString = “1234C”; Regex string regExString = @”\d\d\d\d\d”; Regex rex = new Regex(regExString); bool isMatch = rex.IsMatch(searchString); Gọi phương thức IsMatch //Cần US Zip code thay bằng: string searchString = “12345-6789”; string regExString = @”\d\d\d\d\d-\d\d\d\d”; Ví dụ: dùng match matches Match "e" in testString Match "e" multiple times Ví dụ: Dùng character class ".*" match nhóm ký tự trừ newline Quantifier character class Có thể dùng lớp ký tự định lượng Ví dụ: US Zip code: string regExString = @”\d{5}-\d{4}”; @ la chuoi thi \d neu khong phai \\d Greedy and lazy Quantifier theo nguyên tắc greedy string testString = "123456789"; Console.Write("{0} \n", Regex.Match(testString,@"\d{5,10}")); Nếu có ? sau ký tự quantifier trở nên lazy string testString = "123456789"; Console.Write("{0} \n", Regex.Match(testString,@"\d{5,10}?")); Ví dụ: greedy & lazy find sequences of word characters find sequences of word characters- lazy Group, Optional Ngoài cịn có 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 (exp1|exp2) Hoặc, ý nghĩa so trùng với biểu thức quy exp1 exp2 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 classcharacter class subtraction vd: "[\d-[4]]" ký số trừ số 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 ký tự hoa, nhóm ký tự chữ cái, lặp lại nhiều lần khoảng trắng ký tự hoa nhóm ký tự chữ Bắt đầu nhóm ký tự số, khoảng trắng, nhóm ký tự chữ nhóm ký tự chữ khoảng trắng nhóm ký tự chữ Ví dụ: validating input data Ví dụ: validating input data định dạng gồm ký số theo mẫu xxx-xxx-xxxx với ký số đầu nhóm khác 0, Lưu ý ^ $ Ví dụ: validating input data Ví dụ: validating input data Ví dụ: validating input data Phương thức Replace, Split String Regex.Replace(String input,String pattern,String replacement) Trả chuỗi kết chuỗi sau thay chuỗi tìm thấy pattern input chuỗi replacement String[] Regex.Split(String input, String pattern) Trả chuỗi split từ chuỗi input vị trí chuỗi thỏa pattern