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 sống ngày, người diễn đạt ý niệm hay việc làm qua lời nói, cử hay chữ viết Bởi người có giác quan khác giác quan giúp hiểu vấn đề qua nhìn, nghe, ngửi, nếm, cảm thấy Nói cách tổng quát, xã hội văn minh làm việc tiếp xúc với qua cách dùng ngôn ngữ Như người Việt dùng tiếng Việt để trao đổi tin tức hay diễn đạt vấn đề Nhưng máy tính giác quan người chúng ta, trao đổi thông tin với vi tính cách đơn giản hiệu quả? Theo toán học, thành ngữ tập hợp chữ viết Mỗi chữ viết bao gồm 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 người diễn tả tập hợp chữ viết phương pháp tương đương với việc diễn tả thành ngữ Cấu trúc đại diện hay Regular Expression (Regex) dạng viết ngắn gọn để mô tả tập hợp chữ viết tạm dịch phương pháp dùng để mô tả hay diễn đạt thành ngữ cách ngắn gọn hiệu Ví dụ để diễn tả tập hợp chữ chứa chữ chữ mà (a set of string contains only alphabet), Regex diễn tả câu nói ngắn gọn sau: [a-zA-Z]* II- Khái niệm - Toán tử “or”: Được ngăn cách dấu “|” Ví dụ: ktmpk10b|ktpmk10a ktpmk10b ktpmk10a hợp lệ - Nhóm: Sử dụng dấu ngoặc đơn “(” “)” để nhóm nhóm Regex nhằm xác định phạm vi khai thác liệu Ví dụ: k10aktmpm|k10bktpm k10(a|b)ktpm Regex tương đương mô tả lựa chọn k10aktpm k10bktpm - Định lượng: Được sử dụng để định nghĩa số lượng thành phần nhóm mức độ thường xuyên mà thành phần xảy ra, thường gặp dấu hỏi chấm, dấu cộng dấu • Dấu ?: Cho biết thành phần xuất lần không xuất Ví dụ: k10b?ktpm , dấu ? theo sau ký tự “a” nên “a” có không PHƯƠNG PHÁP XÂY DỰNG PHẦN MỀM – REGULAR EXPRESSION • Dấu *: Cho biết thành phần không xuất xuất nhiều lần Ví dụ: ab*c, giá trị hợp lệ là: ac, abc, abbc, abbbc,… Dấu +: Tương tự dấu *, nhiên thành phần phải xuất lần Ví dụ: ab*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, giá trị hợp lệ là: aaab {min,}: Thành phần đứng trước lặp lại tối thiểu lần Ví dụ: a{3,}b giá trị hợp lệ là: aaab, aaaab, aaaaab,… {min,max}: Thành phần đứng trước lặp khoảng từ tới max Ví dụ: a{2,4}, giá trị hợp lệ là: aab, aaab, aaaab • • • • III- • Cú pháp Cú pháp Regex [] [^ ] ^ $ () * {min,max } Hợp lệ với ký tự đơn bất kỳ( trừ dòng số ứng dụng) Ví dụ: a.b giá trị hợp lệ là: aab, acb, adb, axb, a2b,… Tuy nhiên [a.b] hiểu là: “a” “.” “b” Là biểu thức hợp lệ với ký tự đơn chứa dấu ngoặc vuông [] Ví dụ: [abc] hợp lệ với: a, b, c [a-z] sử dụng xác định phạm vi ký tự từ a đến z Tương tự [0-9] phạm vi ký tự số từ đến Chúng ta sử dụng kết hợp [abcxz] với "a", "b", "c", "x", "y", "z", đoạn regex viết gọn [a-cx-z] Phép phủ định Regex Ví dụ: [^abc] hợp lệ ký tự a, b c Regex lấy vị trí hợp lệ từ đầu dòng chuỗi Hợp lệ với vị trí cuối chuỗi Được sử dụng để định nghĩa expression hay gọi nhóm khối, sử dụng để gọi lại cần Cho biết thành phần không xuất xuất nhiều lần Ví dụ: ab*c, giá trị hợp lệ là: ac, abc, abbc, abbbc,… Thành phần đứng trước lặp khoảng từ tới max Ví dụ: a{2,4}, giá trị hợp lệ là: aab, aaab, aaaab Ví dụ: • • • • • at: Các từ có ký tự theo sau “at” Hợp lệ: cat, mat, hat, bat, tat,… [hc]at: Hợp lệ hat cat Có thể sử dụng hat|cat có ý nghĩa tương tự [^b]at: Tất từ ký tự theo sau “at” ngoại trừ “bat”, ngoặc vuông loại ký tự b [^hc]at: Tất từ ký tự theo sau “at” ngoại trừ “hat” “cat” ^[hc]at: Hợp lệ với “hat” “cat” từ bắt đầu đầu dòng, từ không bắt đầu đầu dòng không hợp lệ PHƯƠNG PHÁP XÂY DỰNG PHẦN MỀM – REGULAR EXPRESSION • t.*: Hợp lệ với từ bắt đầu chữ t, theo sau ký tự đơn Ví dụ: t, ti, tinh,… Các lớp ký tự Cú pháp Cú pháp tương đương( n ếu có) \a [A-Za-z] [A-Za-z0-9] [A-Za-z0-9_] [^A-Za-z0-9_] \w \W [\t\r\n\v\f [0-9] [^0-9] [a-z] \s \d \D \l \S \u \x [^ \t\r\n\v\f] [A-Z] [A-Fa-f0-9] \character Mô tả Chỉ ký tự chữ hoa thường Ví dụ: t\at, từ hợp lệ: tat, tbt, tAt, tct, tdt, … Chữ chữ số Ví dụ: KTPMK[A-Zaz0-9] Các giá trị hợp lệ: KTPM1, KTPMA, KTPM9, KTPMB Chữ cái, chữ số dấu gạch Không ký tự chữ cái, chữ số, dấu gạch Khoảng trắng Chữ số Không chữ số Chữ thường Không phải khoảng trắng Chữ hoa Chữ số hệ 16 Các ký tự đặc biệt sử dụng phải thêm ký tự \ vào trước Ví dụ: \@, \?, \\, \/,… Group Lookaround Cú pháp () (?:abc) (?=abc) (?!abc) Mô tả Để nhóm expression Regex sử dụng cú pháp “( )”, đặt thành phần muốn nhóm vào ngoặc tròn Ví dụ: (ti)+, giá trị hợp lệ: tin, tinh, tinhh,… Nhóm nhiều mã với mà không cần tạo nhóm để gộp Ví dụ: (?:abc)+ giá trị hợp lệ: abc,abcabcabc , abcabc, abcabcabc,… với abc lặp liên tục Position Lookahead Kiểm tra điều kiện phía sau Regex, lúc trỏ đặt đầu regex( phía trước abc chuỗi) Ví dụ:Lấy phần đầu Gmail /[^\s]+(?=@gmail\.com)/ Hợp lệ: vucongtinh@gmail.com Không hợp lệ: vucongtinh@yahoo.com Negative Lookahead: Ngược lại với (?=abc), bạn muốn tìm phần PHƯƠNG PHÁP XÂY DỰNG PHẦN MỀM – REGULAR EXPRESSION (? ví dụ sử dụng (?!) Position Lookahind: Ngược lại với (?=abc), Lookahind kiểm tra điều kiện phía trước Regex Ví dụ: Lấy username từ URL tài khoản Facebook Chuỗi: https://www.facebook.com/vucongtinh Regex: /(?dụng ngôn ngữ lập trình để thực nhiệm vụ định: Kiểm tra liệu đầu vào, lấy liệu từ chuỗi, tìm kiếm liệu,… Một số ứng dụng lập trình web: HTML5 Trong HTML5, thẻ input bổ sung thêm thuộc tính pattern nhằm đưa Regex vào để kiểm tra liệu vào Ví dụ: - - Kiểm tra mật phải ký tự Password: ... dòng không hợp lệ PHƯƠNG PHÁP XÂY DỰNG PHẦN MỀM – REGULAR EXPRESSION • t.*: Hợp lệ với từ bắt đầu chữ t, theo sau ký tự đơn Ví dụ: t, ti, tinh,… Các lớp ký tự Cú pháp Cú pháp tương đương( n...PHƯƠNG PHÁP XÂY DỰNG PHẦN MỀM – REGULAR EXPRESSION • Dấu *: Cho biết thành phần không xuất xuất nhiều lần Ví dụ: ab*c, giá trị hợp lệ... email’); PHƯƠNG PHÁP XÂY DỰNG PHẦN MỀM – REGULAR EXPRESSION Trong PHP Để thực thi Regex PHP dụng số hàm: preg_match(), preg_match_all(), preg_replace(), preg_grep(), preg_split() Ví dụ: Lấy phần