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... Regular expression là chuỗi mẫu chứa các ký tự định dạng
Trang 1CHAPTER 2:
REGULAR EXPRESSION (BIỂU THỨC CHÍNH QUY) C# 2010 for programmer chapter 16 in
page 567
Trang 2Nộ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
Trang 31 - 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ệ
Trang 5Sử 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 con thỏa Chuỗi_Mẫu trong Chuỗi_Văn_Bản thì trả về
matchObject 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ề MatchCollection object chứa thông tin các chuỗi con này.
Trang 6Ví dụ: so sánh việc dùng regular
expression
// Nếu chỉ sử dụng thuật toán
string zip = “1234C”;
bool isGoodZip = true;
foreach (char ch in zip)
@”\d\d\d\d\d-\d\d\d\d”;
Trang 7Ví dụ: dùng match và matches
Match "e" in testString
Match "e" multiple times
Trang 82.
Trang 9Ví dụ: Dùng character class
".*" match nhóm ký
tự bất kỳ trừ newline
Trang 103 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
Trang 113 Quantifier character class
Còn được gọi là metacharacter
Trang 12Ví dụ:
Dùng static method Matches
p xuất hiện 0 hoặc 1 lần
Trang 134 Greedy and lazy
Quantifier đều theo nguyên tắc greedy
Trang 14Ví dụ: greedy & lazy
find sequences
of word characters
find sequences
of word characters- lazy
Trang 155 Group, Optional
Ngoài ra còn có một số character class khác:
quy exp1 hoặc exp2 vd: Hi (John|Jane)
vd: \d[a-z]+ khác với (\d[a-z])+
character
class-character class subtraction
vd: "[\d-[4]]" mọi ký số trừ số 4
Trang 16Ví dụ: subtraction character
(khác với range character)
Trang 17Ví dụ: validating input data
Trang 20Bắ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.
Trang 21Ví dụ: validating input data
Trang 22định dạng gồm các ký số
theo mẫu xxx-xxx-xxxx với ký số đầu
nhóm khác 0,
Lưu ý ^ và $
Trang 23Ví dụ: validating input data
Trang 266 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.