Upload
zelig
View
48
Download
1
Embed Size (px)
DESCRIPTION
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 - PowerPoint PPT Presentation
Citation preview
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.RegularExpression:
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 MatchCollection objectả ề
2.Match class1. Ki u ch a m t k t qu match tìm th y.ể ứ ộ ế ả ấ2. ToString() tr v chu i con match v i regular expressionả ề ỗ ớ
3.MatchCollection class1. 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 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.
Ví 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)
{
if (!char.IsDigit(ch))
{
isGoodZip = false;
break;
}
}
//dùng regular expression
string searchString = “1234C”;
string regExString = @”\d\d\d\d\d”;
Regex rex = new Regex(regExString);
bool isMatch = rex.IsMatch(searchString);
Tạo object kiểu class Regex
Gọi phương thức IsMatch
//Cần US Zip code thì thay bằng:
string searchString = “12345-6789”;
string regExString = @”\d\d\d\d\d-\d\d\d\d”;
Ví dụ: dùng match và matches
Match "e" in testString
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 regExString = @”\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 greedystring testString = "123456789";
Console.Write("{0} \n", Regex.Match(testString,@"\d{5,10}"));
Nếu có ? sau ký tự quantifier nó trở nên lazystring 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
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
(exp1|exp2) Hoặc, ý nghĩa so trùng với biểu thức chính quy exp1 hoặc 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 class-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-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.