1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

6 64 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 350,69 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Báo cáo Phương pháp xây dựng phần mềm Regular expression giới thiệu đến các bạn những nội dung về regular expression, khái niệm regular expression, cú pháp regular expression, group và lookaround,... Với các bạn đang học chuyên ngành Công nghệ thông tin thì đây là tài liệu tham khảo hữu ích.

Trang 1

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:

Vũ Công T nhị

Hà H i Hùngả Nghiêm Xuân S nơ

I- 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 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 ề ợ ệ

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

Trang 2

- Đ 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ẽ {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.ụ ị ợ ệ

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­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 ể ị ộ ọ

Trang 3

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,…ừ ự ợ ệ [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ớ ự

tươ  ng

đương( n

u có) ế

Mô tả

[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, 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ả ắ

Trang 4

[^ \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ữ ố ệ

\character Các ký t  đ c bi t khi s  d ng ph i thêmự ặ ệ ử ụ ả  

ký t  \ vào trự ước

Ví d : \@, \?, \\, \/,…ụ

3. Group và Lookaround

( ) Đ  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).ủ ỗ

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*)/

(?<!abc) Negative Lookahind: Ngượ ạ ớc l i v i (?<=abc), (?<!abc) s  ki m traẽ ể  

n u đi u ki n phía trế ề ệ ước Regex là sai

IV- ng d ng Regex

Regex đượ ức  ng d ng trong các ngôn ng  l p trình đ  th c hi n m t nhi m v  nh t đ nh:ụ ữ ậ ể ự ệ ộ ệ ụ ấ ị  

Ki m tra d  li u đ u vào, l y d  li u t  1 chu i, tìm ki m d  li u,…ể ữ ệ ầ ấ ữ ệ ừ ỗ ế ữ ệ

Trang 5

M t s   ng d ng trong l p trình web:ộ ố ứ ụ ậ

Trong HTML5, các th  input đẻ ược b  sung thêm thu c tính pattern nh m đ a Regex vào ổ ộ ằ ư

đ  ki m tra d  li u vào.ể ể ữ ệ

Ví d :ụ

- Ki m tra m t kh u ph i ít nh t 6 ký t  b t kể ậ ẩ ả ấ ự ấ ỳ

<form action="vctinh.php">

  Password: <input type="password" name="pw"  pattern=".{6,}"  title=”Ít nh t  ấ

6 ký t "> ự

  <input type="submit">

</form>

- Ki m tra Email h p lể ợ ệ

<form action="vctinh.php">

E­mail: <input type="email" name="email"  pattern="[a­z0­9._%+­]+@[a­z0­9.­]+\.[a­z] {2,3}$">

<input type="submit">

</form>

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’);

Trang 6

3. Trong PHP

Đ  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 ợ ả ế ả ả ề

Ngày đăng: 09/01/2020, 13:08

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w