27
CHAPTER 2: REGULAR EXPRESSION (BIỂU THỨC CHÍNH QUY) C# 2010 for programmer chapter 16 in page 567

CHAPTER 2:

  • 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

Page 1: CHAPTER 2:

CHAPTER 2:

REGULAR EXPRESSION

(BIỂU THỨC CHÍNH QUY)

C# 2010 for programmer chapter 16 in page 567

Page 2: CHAPTER 2:

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

Page 3: CHAPTER 2:

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ệ...

Page 4: CHAPTER 2:

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.ể ứ ậ ề ấ

Page 5: CHAPTER 2:

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.

Page 6: CHAPTER 2:

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”;

Page 7: CHAPTER 2:

Ví dụ: dùng match và matches

Match "e" in testString

Match "e" multiple times

Page 8: CHAPTER 2:

2.

Page 9: CHAPTER 2:

Ví dụ: Dùng character class

".*" match nhóm ký tự bất kỳ trừ newline

Page 10: CHAPTER 2:

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

Page 11: CHAPTER 2:

3. Quantifier character class

Còn được gọi là metacharacter

Page 12: CHAPTER 2:

Ví dụ:

Dùng static method Matches

p xuất hiện 0 hoặc 1 lần

Page 13: CHAPTER 2:

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}?"));

Page 14: CHAPTER 2:

Ví dụ: greedy & lazy

find sequences of word

characters

find sequences of word

characters- lazy

Page 15: CHAPTER 2:

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

Page 16: CHAPTER 2:

Ví dụ: subtraction character (khác với range character)

Page 17: CHAPTER 2:

Ví dụ: validating input data

Page 18: CHAPTER 2:

Ví dụ: validating input data

Page 19: CHAPTER 2:

Ví dụ: validating input data

Page 20: CHAPTER 2:

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.

Page 21: CHAPTER 2:

Ví dụ: validating input data

Page 22: CHAPTER 2:

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à $

Page 23: CHAPTER 2:

Ví dụ: validating input data

Page 24: CHAPTER 2:

Ví dụ: validating input data

Page 25: CHAPTER 2:

Ví dụ: validating input data

Page 26: CHAPTER 2:

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.

Page 27: CHAPTER 2: