Báo cáo phương pháp xây dựng phần mềm regular expression

  • Số trang: 12 |
  • Loại file: PDF |
  • Lượt xem: 19 |
  • Lượt tải: 0
nganguyen

Đã đăng 34173 tài liệu

Mô tả:

PHƢƠNG PHÁP XÂY DỰNG PHẦN MỀM – REGULAR EXPRESSION BÁO CÁO MÔN: PHƢƠNG PHÁP XÂY DỰNG PHẦN MỀM CHỦ ĐỀ: REGULAR EXPRESSION Thành viên nhóm: I-  Vũ Công Tịnh  Hà Hải Hùng  Nghiêm Xuân Sơn Giới thiệu Regular Expression Trong cuộc sống hằng ngày, con ngƣời chúng ta diễn đạt một ý niệm hay một việc làm qua lời nói, cử chỉ hay bằng chữ viết. Bởi vì con ngƣời chúng ta có 5 giác quan khác nhau và những giác quan đó giúp chúng ta hiểu đƣợc vấn đề qua sự nhìn, nghe, ngửi, nếm, cảm thấy. Nói một cách tổng quát, trong xã hội văn minh thì chúng ta làm việc và tiếp xúc với nhau qua cách dùng ngôn ngữ. Nhƣ ngƣời Việt thì dùng tiếng Việt để trao đổi tin tức hay diễn đạt một vấn đề. Nhƣng máy tính thì không có những PHƢƠNG PHÁP XÂY DỰNG PHẦN MỀM – REGULAR EXPRESSION giác quan nhƣ con ngƣời chúng ta, vậy làm sao chúng ta có thể trao đổi thông tin với vi tính một cách đơn giản nhƣng hiệu quả? Theo toán học, thành ngữ là một tập hợp của chữ viết. Mỗi chữ viết bao gồm một chuỗi ký tự xác định (a language is a set of finite string; a string is a finite sequence of symbols -Appel 1998). Cho nên nếu con ngƣời có thể diễn tả một tập hợp chữ viết bằng một phƣơng pháp nào đó thì nó tƣơng đƣơng với việc diễn tả một thành ngữ. Cấu trúc đại diện hay Regular Expression (Regex) là một dạng viết ngắn gọn để mô tả một tập hợp chữ viết và có thể tạm dịch là một phƣơng pháp dùng để mô tả hay diễn đạt thành ngữ một cách ngắn gọn và hiệu quả. Ví dụ nhƣ để diễn tả một tập hợp chữ chỉ chứa những chữ cái và chỉ chữ cái mà thôi (a set of string contains only alphabet), thì Regex có thể diễn tả câu nói trên ngắn gọn nhƣ sau: [a-zA-Z]* II- Khái niệm cơ bản - Toán tử “or”: Đƣợc ngăn cách bởi dấu “|”. Ví dụ: ktmpk10b|ktpmk10a thì cả ktpmk10b và ktpmk10a đều hợp lệ. PHƢƠNG PHÁP XÂY DỰNG PHẦN MỀM – REGULAR EXPRESSION - Nhóm: Sử dụng dấu ngoặc đơn “(” và “)” để nhóm các nhóm trong Regex nhằm xác định phạm vi và khai thác dữ liệu. Ví dụ: k10aktmpm|k10bktpm và k10(a|b)ktpm là 2 Regex tƣơng đƣơng nhau đều mô tả 2 lựa chọn k10aktpm và k10bktpm. - Định lƣợng: Đƣợc sử dụng để định nghĩa số lƣợng của 1 thành phần hoặc 1 nhóm về mức độ thƣờng xuyên mà thành phần đó xảy ra, thƣờng gặp nhất là dấu hỏi chấm, dấu cộng và dấu sao.  Dấu ?: Cho biết thành phần đó có thể xuất hiện 1 lần hoặc không xuất hiện. Ví dụ: k10b?ktpm , nhƣ vậy dấu ? theo sau ký tự “a” nên “a” có thể có hoặc không.  Dấu *: Cho biết thành phần có thể không xuất hiện hoặc xuất hiện nhiều lần. Ví dụ: ab*c, các giá trị hợp lệ sẽ là: ac, abc, abbc, abbbc,…  Dấu +: Tƣơng tự nhƣ dấu *, tuy nhiên thành phần phải xuất hiện ít nhất 1 lần. Ví dụ: ab*c thì các giá trị hợp lệ: abc, abbc, abbbc.  {n}: Thành phần đứng trƣớc lặp lại n lần. Ví dụ: a{3}b, thì giá trị hợp lệ sẽ là: aaab PHƢƠNG PHÁP XÂY DỰNG PHẦN MỀM – REGULAR EXPRESSION  {min,}: Thành phần đứng trƣớc lặp lại tối thiểu min lần. Ví dụ: a{3,}b thì giá trị hợp lệ sẽ là: aaab, aaaab, aaaaab,…  {min,max}: Thành phần đứng trƣớc lặp trong khoảng từ min tới max. Ví dụ: a{2,4}, thì giá trị hợp lệ là: aab, aaab, aaaab.  III- Cú pháp 1. Cú pháp cơ bản trong Regex . Hợp lệ với các ký tự đơn bất kỳ( trừ các dòng mới trong 1 số ứng dụng). Ví dụ: a.b thì các giá trị hợp lệ là: aab, acb, adb, axb, a2b,… Tuy nhiên [a.b] thì sẽ đƣợc hiểu là: “a” hoặc “.” hoặc “b” [] Là một biểu thức hợp lệ với các ký tự đơn chứa trong dấu ngoặc vuông []. Ví dụ: [abc] hợp lệ với: hoặc a, hoặc b, hoặc c. [a-z] sử dụng xác định phạm vi các ký tự từ a đến z. Tƣơng tự [0-9] phạm vi ký tự số từ 0 đến 9. Chúng ta có thể sử dụng kết hợp nhƣ [abcx- PHƢƠNG PHÁP XÂY DỰNG PHẦN MỀM – REGULAR EXPRESSION z] đúng với "a", "b", "c", "x", "y", hoặc "z", đoạn regex kia cũng có thể viết gọn hơn là [a-cx-z]. [^ ] Phép phủ định trong Regex. Ví dụ: [^abc] hợp lệ khi các ký tự đó không phải là a, b hoặc c. ^ Regex này lấy vị trí hợp lệ từ đầu dòng trong 1 chuỗi. $ Hợp lệ với vị trí cuối cùng của 1 chuỗi. () Đƣợc sử dụng để định nghĩa một expression con hay còn gọi là nhóm hoặc 1 khối, có thể sử dụng để gọi lại khi cần. * Cho biết thành phần có thể không xuất hiện hoặc xuất hiện nhiều lần. Ví dụ: ab*c, các giá trị hợp lệ sẽ là: ac, abc, abbc, abbbc,… {min,max} Thành phần đứng trƣớc lặp trong khoảng từ min tới max. Ví dụ: a{2,4}, thì giá trị hợp lệ là: aab, aaab, aaaab. Ví dụ:  .at: Các từ có 3 ký tự theo sau là “at”. Hợp lệ: cat, mat, hat, bat, tat,… PHƢƠNG PHÁP XÂY DỰNG PHẦN MỀM – REGULAR EXPRESSION  [hc]at: Hợp lệ hat hoặc cat. Có thể sử dụng hat|cat cũng có ý nghĩa tƣơng tự.  [^b]at: Tất cả các từ 3 ký tự theo sau là “at” ngoại trừ “bat”, vì trong ngoặc vuông loại ký tự b.  [^hc]at: Tất cả các từ 3 ký tự theo sau là “at” ngoại trừ “hat” và “cat”.  ^[hc]at: Hợp lệ với “hat” và “cat” nếu từ đó bắt đầu ở đầu dòng, các từ không bắt đầu ở đầu dòng không hợp lệ.  t.*: Hợp lệ với các từ bắt đầu bởi chữ t, theo sau có thể là bất kỳ ký tự đơn nào hoặc không có. Ví dụ: t, ti, tinh,… 2. Các lớp ký tự Cú pháp Cú pháp Mô tả tƣơng đƣơng( nếu có) [A-Za-z] \a Chỉ ký tự chữ cái hoa và thƣờng. Ví dụ: t\at, thì các từ hợp lệ: tat, tbt, tAt, tct, PHƢƠNG PHÁP XÂY DỰNG PHẦN MỀM – REGULAR EXPRESSION tdt,… [A-Za-z0-9] Chữ cái và chữ số. Ví dụ: KTPMK[A-Za- z0-9] Các giá trị hợp lệ: KTPM1, KTPMA, KTPM9, KTPMB [A-Za-z0-9_] \w Chữ cái, chữ số và dấu gạch dƣới [^A-Za-z0-9_] \W Không là ký tự chữ cái, chữ số, dấu gạch dƣới [\t\r\n\v\f \s Khoảng trắng [0-9] \d Chữ số [^0-9] \D Không là chữ số [a-z] \l Chữ cái thƣờng [^ \t\r\n\v\f] \S Không phải khoảng trắng [A-Z] \u Chữ cái hoa [A-Fa-f0-9] \x Chữ số hệ 16 PHƢƠNG PHÁP XÂY DỰNG PHẦN MỀM – REGULAR EXPRESSION Các ký tự đặc biệt khi sử dụng phải thêm \character ký tự \ vào trƣớc. Ví dụ: \@, \?, \\, \/,… 3. Group và Lookaround Cú pháp () Mô tả Để nhóm các expression trong Regex chúng ta sử dụng cú pháp “( )”, đặt các thành phần muốn nhóm vào trong ngoặc tròn. Ví dụ: (ti)+, các giá trị hợp lệ: tin, tinh, tinhh,… (?:abc) Nhóm nhiều mã với nhau mà không cần tạo 1 nhóm để gộp. Ví dụ: (?:abc)+ thì các giá trị hợp lệ: abc,abcabcabc , abcabc, abcabcabc,… với abc lặp liên tục. (?=abc) Position Lookahead. Kiểm tra điều kiện ở phía sau của Regex, lúc này con trỏ đặt đầu regex( phía trƣớc abc của 1 chuỗi). PHƢƠNG PHÁP XÂY DỰNG PHẦN MỀM – REGULAR EXPRESSION Ví dụ:Lấy phần đầu của Gmail /[^\s]+(?=@gmail\.com)/ Hợp lệ: vucongtinh@gmail.com Không hợp lệ: vucongtinh@yahoo.com (?!abc) Negative Lookahead: Ngƣợc lại với (?=abc), nếu bạn muốn tìm phần đầu của email không phải của Gmail thì bạn dung nhƣ ví dụ trên sử dụng (?!) (?<=abc) Position Lookahind: Ngƣợc lại với (?=abc), Lookahind kiểm tra điều kiện ở phía trƣớc của Regex. Ví dụ: Lấy username từ URL của 1 tài khoản Facebook Chuỗi: https://www.facebook.com/vucongtinh Regex: /(?<=facebook.com\/)(\w*)/ (? Password: - Kiểm tra Email hợp lệ PHƢƠNG PHÁP XÂY DỰNG PHẦN MỀM – REGULAR EXPRESSION
E-mail:
2. Trong Javascript Để sử dụng Regex trong Javascript các bạn có thể sử dụng 2 phƣơng thức cho string: search() và replace() để tìm và thay thế. Hoặc sử dụng test() và exec() cho các đối tƣợng - Kiểm tra Email Var email=”vucongtinh@gmail.com”; Var rex= ”/[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$/”; If(Rex.test(email)) alert(„Valid email‟); Else alert(„Invalid email‟); 3. Trong PHP PHƢƠNG PHÁP XÂY DỰNG PHẦN MỀM – REGULAR EXPRESSION Để thực thi Regex trong PHP có thể dụng 1 số hàm: preg_match(), preg_match_all(), preg_replace(), preg_grep(), preg_split(). Ví dụ: Lấy phần đầu của Gmail $email=”vucongtinh@gmail.com”; If(preg_match(“/^(\w+)(?=\@gmail.com)/”,$email,$matchs)){ Echo $matchs[1]; } Else echo “Invalid email”; Trƣờng hợp trên $matchs là mảng kết quả trả về.
- Xem thêm -