BIỂU THỨC CHÍNH QUY THƯ VIỆN HÀM BIỂU THỨC CHÍNH QUY TRONG PHP Phần 1: Biểu thức chính quy 1.1 Khái niệm Biểu thức chính quy ( regular expression viết tắt là regexp, reges hay regxp) là một chuỗi miêu tả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định. 1.2 Đặc điểm 1.2.1 Ưu điểm Giúp đơn giản hơn trong lập trình và quá trình xử lý văn bản. ( Thay vì cần đến hàng trăm thủ tục để có thể trích xuất tất cả các địa chỉ email từ một số tài liệu, với regular expression chỉ cần một số dòng lệnh hoặc thậm chí một dòng lệnh để làm việc này. Giúp tiết kiệm thời gian và công sức 1.2.2 Nhược điểm Gây phiền toái không mong muốn như: sử dụng một biểu thức chính quy không phù hợp với biểu thức muốn tìm hoặc số văn bản tìm được với biểu thức chính quy đó không phù hợp. 1.3 Lịch sử phát triển Nguồn gốc của biểu thức chính quy nằm ở lý thuyết tự động và lý thuyết ngôn ngữ hình thức, cả hai đều là một phần của khoa học máy tính. Do vậy có thể nói thuật ngữ regular expression xuất phát từ lý thuyết toán học và khoa học máy tính, nó phản ánh một đặc điểm của các biểu thức toán học được gọi là chính quy (regularity). Trong những năm 1950, nhà toán học Stephen Cole Kleene mô tả các mô hình này bằng cách sử dụng các ký hiệu toán học của ông được gọi là tập chính quy. Ngôn ngữ SNOBOL được sử dụng đầu tiên trong việc so khớp mẫu, nhưng nó cũng không giống hoàn toàn với biểu thức chính quy. Sau đó Ken Thompson đã xây dựng các ký hiệu Kleene vào trình soạn thảo QED để so khớp mẫu trong các file văn bản. Sau đó ông thêm khả năng này vào trình soạn thảo Unix, mà cuối cùng đã trở thành công cụ tìm kiếm grep rất phổ biển được sử dụng cho biểu thức chính quy (grep là một từ có nguồn gốc từ những lệnh của biểu thức chính quy tìm kiếm: grep viết tăt cho biểu thức chính quy). Kể từ đó nhiều biến thể của biểu thức chính quy do Thompson đưa ra được sử dụng rộng rãi trong Unix và các hệ Unixlike bao gồm cả expr, AWK, Emacs.. Biểu thức chính quy của Perl và Tcl được bắt nguồn từ thư viện regex viết bởi Henry Spencer, mặc dù sau đó Perl đã mở rộng thư viện này để thêm nhiều tính năng mới. Philip Hazel phát triển PCRE(Perl Compatible Regular Expressions – biểu thức chính quy tương thích Perl), dựa trên biểu thức chính quy của Perl và được sử dụng trong nhiều công cụ hiện đại như PHP và Apache HTTP Server. Một phần của những nổ lực trong việc thiết kế Perl6 là cải thiện, phát triển biểu thức chính quy Perl tích hợp và tăng phạm vi và khả năng để cho phép định nghĩa được các biểu hiện phân tích cú pháp. Kết quả cho ra đời minilanguage gọi là Perl 6 được sử dụng để định nghĩa cú pháp cũng như cung cấp mọt công cụ để lập trình bằng ngôn ngữ. 1.4 Các kiến thức cơ bản về biểu thức chính quy 1.4.1 Khai báo Regular expression là một phần của ngôn ngữ lập trình và các thư viện để hoạt động và phát triển. Sau đây là khai báo sử dụng regular expression trong 2 ngôn ngữ lớn là Java và C: Với ngôn ngữ Java: using java.util.regex; Với ngôn ngữ C: using System.Text.RegularExpressions; Với những thư viện đã khai báo sử dụng. Chúng ta có thể thực hiện những công việc thông thường của regular expression như tìm kiếm và thay thế bằng cách xây dựng những cú pháp đặc biệt. 1.4.2 Cách thức hoạt động của biểu thức chính quy Regex engine là 1 bộ phận của phần mềm, chuyên để xử lý regex (so khớp mẫu với 1 chuỗi nào đó). Có nhiều regex engine và chúng không hoàn toàn tương thích với nhau. Cú pháp regex (flavor) của mỗi engine cũng có sự khác nhau. Chúng ta sẽ tập trung vào cú pháp regex được sử dụng trong Perl 5, vì nó phổ biến nhất. Rất nhiều engine regex khác giống với engine sử dụng trong Perl 5: engine nguồn mở PCRE (sử dụng trong rất nhiều ngôn ngữ lập trình, như PHP), thư viện regex .NET,...
Trang 1BI U TH C CHÍNH QUY ỂU THỨC CHÍNH QUY ỨC CHÍNH QUY
TH VI N HÀM BI U TH C CHÍNH QUY TRONG PHP Ư VIỆN HÀM BIỂU THỨC CHÍNH QUY TRONG PHP ỆN HÀM BIỂU THỨC CHÍNH QUY TRONG PHP ỂU THỨC CHÍNH QUY ỨC CHÍNH QUY
Ph n 1: Bi u th c chính quy ần 1: Biểu thức chính quy ểu thức chính quy ức chính quy
Bi u th c chính quy ( regular expression vi t t t là regexp, reges hay regxp) là m tết tắt là regexp, reges hay regxp) là một ắt là regexp, reges hay regxp) là một ột chu i miêu t m t b các chu i khác, theo nh ng quy t c cú pháp nh t đ nh.ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ột ột ững quy tắc cú pháp nhất định ắt là regexp, reges hay regxp) là một ất định ịnh
1.2Đ c đi m ặc điểm ểu thức chính quy
1.2.1 Ư VIỆN HÀM BIỂU THỨC CHÍNH QUY TRONG PHP u đi m ểu thức chính quy
Giúp đ n gi n h n trong l p trình và quá trình x lý văn b n ( Thay vì c n đ nả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ập trình và quá trình xử lý văn bản ( Thay vì cần đến ử lý văn bản ( Thay vì cần đến ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ần đến ết tắt là regexp, reges hay regxp) là một hàng trăm th t c đ có th trích xu t t t c các đ a ch email t m t s tài li u,ất định ất định ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ịnh ỉ email từ một số tài liệu, ừ một số tài liệu, ột ố tài liệu, ệu,
v i regular expression ch c n m t s dòng l nh ho c th m chí m t dòng l nhỉ email từ một số tài liệu, ần đến ột ố tài liệu, ệu, ặc thậm chí một dòng lệnh ập trình và quá trình xử lý văn bản ( Thay vì cần đến ột ệu,
đ làm vi c này.ệu,
Giúp ti t ki m th i gian và công s cết tắt là regexp, reges hay regxp) là một ệu, ời gian và công sức
1.2.2 Nh ược điểm c đi m ểu thức chính quy
Gây phi n toái không mong mu n nh : s d ng m t bi u th c chính quy khôngố tài liệu, ư: sử dụng một biểu thức chính quy không ử lý văn bản ( Thay vì cần đến ột phù h p v i bi u th c mu n tìm ho c s văn b n tìm đố tài liệu, ặc thậm chí một dòng lệnh ố tài liệu, ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không c v i bi u th c chính quy đó không phù h p
1.3L ch s phát tri n ịch sử phát triển ử phát triển ểu thức chính quy
Ngu n g c c a bi u th c chính quy n m lý thuy t t đ ng và lý thuy t ngôn ngố tài liệu, ằm ở lý thuyết tự động và lý thuyết ngôn ngữ ở lý thuyết tự động và lý thuyết ngôn ngữ ết tắt là regexp, reges hay regxp) là một ự động và lý thuyết ngôn ngữ ột ết tắt là regexp, reges hay regxp) là một ững quy tắc cú pháp nhất định hình th c, c hai đ u là m t ph n c a khoa h c máy tính Do v y có th nói thu t ngả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ột ần đến ọc máy tính Do vậy có thể nói thuật ngữ ập trình và quá trình xử lý văn bản ( Thay vì cần đến ập trình và quá trình xử lý văn bản ( Thay vì cần đến ững quy tắc cú pháp nhất định regular expression xu t phát t lý thuy t toán h c và khoa h c máy tính, nó ph n ánhất định ừ một số tài liệu, ết tắt là regexp, reges hay regxp) là một ọc máy tính Do vậy có thể nói thuật ngữ ọc máy tính Do vậy có thể nói thuật ngữ ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định
m t đ c đi m c a các bi u th c toán h c đột ặc thậm chí một dòng lệnh ọc máy tính Do vậy có thể nói thuật ngữ ư: sử dụng một biểu thức chính quy không c g i là chính quy (regularity) ọc máy tính Do vậy có thể nói thuật ngữ
Trong nh ng năm 1950, nhà toán h c Stephen Cole Kleene mô t các mô hình nàyững quy tắc cú pháp nhất định ọc máy tính Do vậy có thể nói thuật ngữ ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định
b ng cách s d ng các ký hi u toán h c c a ông đằm ở lý thuyết tự động và lý thuyết ngôn ngữ ử lý văn bản ( Thay vì cần đến ệu, ọc máy tính Do vậy có thể nói thuật ngữ ư: sử dụng một biểu thức chính quy không c g i là t p chính quy ọc máy tính Do vậy có thể nói thuật ngữ ập trình và quá trình xử lý văn bản ( Thay vì cần đến
Ngôn ng SNOBOL đững quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không c s d ng đ u tiên trong vi c so kh p m u, nh ng nó cũngử lý văn bản ( Thay vì cần đến ần đến ệu, ẫu, nhưng nó cũng ư: sử dụng một biểu thức chính quy không không gi ng hoàn toàn v i bi u th c chính quy Sau đó Ken Thompson đã xây d ng cácố tài liệu, ự động và lý thuyết ngôn ngữ
ký hi u Kleene vào trình so n th o QED đ so kh p m u trong các file văn b n Sau đóệu, ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ẫu, nhưng nó cũng ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ông thêm kh năng này vào trình so n th o Unix, mà cu i cùng đã tr thành công cả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ố tài liệu, ở lý thuyết tự động và lý thuyết ngôn ngữ tìm ki m grep r t ph bi n đết tắt là regexp, reges hay regxp) là một ất định ổ biển được sử dụng cho biểu thức chính quy (grep là một từ có ư: sử dụng một biểu thức chính quy không c s d ng cho bi u th c chính quy (grep là m t t cóử lý văn bản ( Thay vì cần đến ột ừ một số tài liệu, ngu n g c t nh ng l nh c a bi u th c chính quy tìm ki m: g/re/p vi t tăt cho bi uố tài liệu, ừ một số tài liệu, ững quy tắc cú pháp nhất định ệu, ết tắt là regexp, reges hay regxp) là một ết tắt là regexp, reges hay regxp) là một
Trang 2th c chính quy) K t đó nhi u bi n th c a bi u th c chính quy do Thompson đ a raừ một số tài liệu, ết tắt là regexp, reges hay regxp) là một ư: sử dụng một biểu thức chính quy không
đư: sử dụng một biểu thức chính quy không c s d ng r ng rãi trong Unix và các h Unix-like bao g m c expr, AWK, Emacs ử lý văn bản ( Thay vì cần đến ột ệu, ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định
Bi u th c chính quy c a Perl và Tcl đư: sử dụng một biểu thức chính quy không c b t ngu n t th vi n regex vi t b iắt là regexp, reges hay regxp) là một ừ một số tài liệu, ư: sử dụng một biểu thức chính quy không ệu, ết tắt là regexp, reges hay regxp) là một ở lý thuyết tự động và lý thuyết ngôn ngữ Henry Spencer, m c dù sau đó Perl đã m r ng th vi n này đ thêm nhi u tính năngặc thậm chí một dòng lệnh ở lý thuyết tự động và lý thuyết ngôn ngữ ột ư: sử dụng một biểu thức chính quy không ệu,
m i Philip Hazel phát tri n PCRE(Perl Compatible Regular Expressions – bi u th c chính quy tư: sử dụng một biểu thức chính quy không ng thích Perl), d a trên bi u th c chính quy c a Perl và đự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không c s d ngử lý văn bản ( Thay vì cần đến trong nhi u công c hi n đ i nh PHP và Apache HTTP Server M t ph n c a nh ngệu, ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ư: sử dụng một biểu thức chính quy không ột ần đến ững quy tắc cú pháp nhất định
n l c trong vi c thi t k Perl6 là c i thi n, phát tri n bi u th c chính quy Perl tíchổ biển được sử dụng cho biểu thức chính quy (grep là một từ có ự động và lý thuyết ngôn ngữ ệu, ết tắt là regexp, reges hay regxp) là một ết tắt là regexp, reges hay regxp) là một ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ệu,
h p và tăng ph m vi và kh năng đ cho phép đ nh nghĩa đạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ịnh ư: sử dụng một biểu thức chính quy không c các bi u hi n phân tíchệu,
cú pháp K t qu cho ra đ i mini-language g i là Perl 6 đết tắt là regexp, reges hay regxp) là một ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ời gian và công sức ọc máy tính Do vậy có thể nói thuật ngữ ư: sử dụng một biểu thức chính quy không c s d ng đ đ nh nghĩa cúử lý văn bản ( Thay vì cần đến ịnh pháp cũng nh cung c p m t công c đ l p trình b ng ngôn ng ư: sử dụng một biểu thức chính quy không ất định ọc máy tính Do vậy có thể nói thuật ngữ ập trình và quá trình xử lý văn bản ( Thay vì cần đến ằm ở lý thuyết tự động và lý thuyết ngôn ngữ ững quy tắc cú pháp nhất định
1.4Các ki n th c c b n v bi u th c chính quy ến thức cơ bản về biểu thức chính quy ức chính quy ơ bản về biểu thức chính quy ản về biểu thức chính quy ề biểu thức chính quy ểu thức chính quy ức chính quy
1.4.1 Khai báo
Regular expression là m t ph n c a ngôn ng l p trình và các th vi n đ ho tột ần đến ững quy tắc cú pháp nhất định ập trình và quá trình xử lý văn bản ( Thay vì cần đến ư: sử dụng một biểu thức chính quy không ệu, ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó
đ ng và phát tri n Sau đây là khai báo s d ng regular expression trong 2 ngôn ngột ử lý văn bản ( Thay vì cần đến ững quy tắc cú pháp nhất định
l n là Java và C#:
- V i ngôn ng Java:ững quy tắc cú pháp nhất định
using java.util.regex;
- V i ngôn ng C#:ững quy tắc cú pháp nhất định
using System.Text.RegularExpressions;
V i nh ng th vi n đã khai báo s d ng Chúng ta có th th c hi n nh ng côngững quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không ệu, ử lý văn bản ( Thay vì cần đến ự động và lý thuyết ngôn ngữ ệu, ững quy tắc cú pháp nhất định
vi c thông thệu, ư: sử dụng một biểu thức chính quy khôngời gian và công sứcng c a regular expression nh tìm ki m và thay th b ng cách xâyư: sử dụng một biểu thức chính quy không ết tắt là regexp, reges hay regxp) là một ết tắt là regexp, reges hay regxp) là một ằm ở lý thuyết tự động và lý thuyết ngôn ngữ
d ng nh ng cú pháp đ c bi t.ự động và lý thuyết ngôn ngữ ững quy tắc cú pháp nhất định ặc thậm chí một dòng lệnh ệu,
1.4.2 Cách th c ho t đ ng c a bi u th c chính quy ức chính quy ạt động của biểu thức chính quy ộng của biểu thức chính quy ủa biểu thức chính quy ểu thức chính quy ức chính quy
Regex engine là 1 b ph n c a ph n m m, chuyên đ x lý regex (so kh p m uột ập trình và quá trình xử lý văn bản ( Thay vì cần đến ần đến ử lý văn bản ( Thay vì cần đến ẫu, nhưng nó cũng
v i 1 chu i nào đó) Có nhi u regex engine và chúng không hoàn toàn tư: sử dụng một biểu thức chính quy không ng thích v i nhau Cú pháp regex (flavor) c a m i engine cũng có s khác nhau Chúng ta sẽ t pự động và lý thuyết ngôn ngữ ập trình và quá trình xử lý văn bản ( Thay vì cần đến
Trang 3trung vào cú pháp regex đư: sử dụng một biểu thức chính quy không c s d ng trong Perl 5, vì nó ph bi n nh t R t nhi uử lý văn bản ( Thay vì cần đến ổ biển được sử dụng cho biểu thức chính quy (grep là một từ có ết tắt là regexp, reges hay regxp) là một ất định ất định engine regex khác gi ng v i engine s d ng trong Perl 5: engine ngu n m PCRE (số tài liệu, ử lý văn bản ( Thay vì cần đến ở lý thuyết tự động và lý thuyết ngôn ngữ ử lý văn bản ( Thay vì cần đến
d ng trong r t nhi u ngôn ng l p trình, nh PHP), th vi n regex NET, ất định ững quy tắc cú pháp nhất định ập trình và quá trình xử lý văn bản ( Thay vì cần đến ư: sử dụng một biểu thức chính quy không ư: sử dụng một biểu thức chính quy không ệu,
Hi u đư: sử dụng một biểu thức chính quy không c cách làm vi c c a regex engine sẽ giúp ta vi t regex t t h n, d dàngệu, ết tắt là regexp, reges hay regxp) là một ố tài liệu, ễ dàng
h n Nó giúp ta hi u đư: sử dụng một biểu thức chính quy không c t i sao 1 regex ho t đ ng không nh mong mu n, và giúpạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ột ư: sử dụng một biểu thức chính quy không ố tài liệu,
ti t ki m th i gian ph i mò m m khi vi t các regex ph c t p ết tắt là regexp, reges hay regxp) là một ệu, ời gian và công sức ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ẫu, nhưng nó cũng ết tắt là regexp, reges hay regxp) là một ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó
Có 2 lo i regex engine: text-directed engines, và regex-directed engines Lo i cúạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó pháp regex mà ta đang th o lu n đây thu c lo i regex-directed engines Lo i engineả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ập trình và quá trình xử lý văn bản ( Thay vì cần đến ở lý thuyết tự động và lý thuyết ngôn ngữ ột ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó này ph bi n h n b i nó có 1 s ch c năng r t h u d ng nh : lazy quantifiers,ổ biển được sử dụng cho biểu thức chính quy (grep là một từ có ết tắt là regexp, reges hay regxp) là một ở lý thuyết tự động và lý thuyết ngôn ngữ ố tài liệu, ất định ững quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không backreferences,
Có th d dàng ki m tra xem lo i cú pháp đang s d ng thu c v engine nàoễ dàng ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ử lý văn bản ( Thay vì cần đến ột qua vi c ki m tra xem lazy quantifiers và backreferences có đệu, ư: sử dụng một biểu thức chính quy không c h tr không Hãy
th dùng bi u th c regex ử lý văn bản ( Thay vì cần đến regex|regex not vào chu i regex not xem sao N u k t qu soết tắt là regexp, reges hay regxp) là một ết tắt là regexp, reges hay regxp) là một ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định
kh p là regex, thì engine đang dùng thu c lo i regex-directed Nêu k t qu là ột ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ết tắt là regexp, reges hay regxp) là một ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định regex not, thì engine thu c lo i text-directed Trong các VD các bài ti p theo, ta sẽ phân tích cột ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ở lý thuyết tự động và lý thuyết ngôn ngữ ết tắt là regexp, reges hay regxp) là một
th cách th c làm vi c c a regex engine, qua đó giúp s d ng regex hi u qu nh t vàệu, ử lý văn bản ( Thay vì cần đến ệu, ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ất định tránh m c l i.ắt là regexp, reges hay regxp) là một
Regex-directed engine luôn tr v k t qu so kh p bên trái nh t ả về kết quả so khớp bên trái nhất ề kết quả so khớp bên trái nhất ết quả so khớp bên trái nhất ả về kết quả so khớp bên trái nhất ớp bên trái nhất ất
Th m chí n u 1 match t t h n có th đập trình và quá trình xử lý văn bản ( Thay vì cần đến ết tắt là regexp, reges hay regxp) là một ố tài liệu, ư: sử dụng một biểu thức chính quy không c tìm th y n u ti p t c so kh p Đâyất định ết tắt là regexp, reges hay regxp) là một ết tắt là regexp, reges hay regxp) là một
là đi u c n ghi nh Regex-directed engine luôn b t đ u so kh p v i ký t đ u tiên c aần đến ắt là regexp, reges hay regxp) là một ần đến ự động và lý thuyết ngôn ngữ ần đến chu i Hãy l y 1 ất định .VD đ n gi n nh t đ minh ho : ta dùng regex ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ất định ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó cat vào chu i He captured a catfish for his cat Engine sẽ b t đ u so kh p d u hi n đ u tiên trong regexắt là regexp, reges hay regxp) là một ần đến ất định ệu, ần đến
là c v i ký t đ u tiên c a chu i là ự động và lý thuyết ngôn ngữ ần đến H Không kh p Vì v y nó ti p t c l n lập trình và quá trình xử lý văn bản ( Thay vì cần đến ết tắt là regexp, reges hay regxp) là một ần đến ư: sử dụng một biểu thức chính quy không t so kh p
v i ký t th 2 và 3 là ự động và lý thuyết ngôn ngữ e và space Đ u không kh p Đ n ký t th 4, ết tắt là regexp, reges hay regxp) là một ự động và lý thuyết ngôn ngữ c đã kh p v i c Xong, gi engine b t đ u so kh p d u hi u th 2 trong regex là ời gian và công sức ắt là regexp, reges hay regxp) là một ần đến ất định ệu, a v i ký t th 5 c aự động và lý thuyết ngôn ngữ chu i là a Kh p Nh ng đ n d u hi u th 3 c a regex là ư: sử dụng một biểu thức chính quy không ết tắt là regexp, reges hay regxp) là một ất định ệu, t thì không kh p v i ký t thự động và lý thuyết ngôn ngữ
6 c a chu i là p Lúc này engine ng ra r ng không th tìm ra 1 match b t đ u t ký tột ằm ở lý thuyết tự động và lý thuyết ngôn ngữ ắt là regexp, reges hay regxp) là một ần đến ừ một số tài liệu, ự động và lý thuyết ngôn ngữ
th 4 c a chu i Vì v y, nó b t đ u l i công vi c t đ u, t ký t th 5 c a chu i.ập trình và quá trình xử lý văn bản ( Thay vì cần đến ắt là regexp, reges hay regxp) là một ần đến ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ệu, ừ một số tài liệu, ần đến ừ một số tài liệu, ự động và lý thuyết ngôn ngữ Regex c không kh p v i a C ti p t c nh v y cho đ n ký t th 15 c a chu i, regex ết tắt là regexp, reges hay regxp) là một ư: sử dụng một biểu thức chính quy không ập trình và quá trình xử lý văn bản ( Thay vì cần đến ết tắt là regexp, reges hay regxp) là một ự động và lý thuyết ngôn ngữ c
đã kh p v i c Engine l n lần đến ư: sử dụng một biểu thức chính quy không t so kh p các d u hi u còn l i trong regex v i các ký tất định ệu, ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ự động và lý thuyết ngôn ngữ
ti p theo trong chu i: ết tắt là regexp, reges hay regxp) là một a kh p a, t kh p t Và nh v y 1 match đã đư: sử dụng một biểu thức chính quy không ập trình và quá trình xử lý văn bản ( Thay vì cần đến ư: sử dụng một biểu thức chính quy không c tìm th y b t đ uất định ắt là regexp, reges hay regxp) là một ần đến
Trang 4t ký t 15 Engine sẽ tr v k t qu và ng ng luôn, không ti p t c tìm xem còn matchừ một số tài liệu, ự động và lý thuyết ngôn ngữ ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ết tắt là regexp, reges hay regxp) là một ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ừ một số tài liệu, ết tắt là regexp, reges hay regxp) là một nào t t h n không (VD: ố tài liệu, cat cu i chu i)ở lý thuyết tự động và lý thuyết ngôn ngữ ố tài liệu,
1.4.3 Ký t thông th ự thông thường và ký tự đặc biệt ường và ký tự đặc biệt ng và ký t đ c bi t ự thông thường và ký tự đặc biệt ặc điểm ệm
a Ký t thông th ự thông thường và ký tự đặc biệt ường và ký tự đặc biệt ng
Regex c b n nh t chính là bi u th c bao g m 1 ký t thông thả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ất định ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy khôngời gian và công sứcng, VD: a Nó sẽ so
kh p v i th c th đ u tiên c a ký t đó trong chu i VD n u có chu i: LazyDog is aự động và lý thuyết ngôn ngữ ần đến ự động và lý thuyết ngôn ngữ ết tắt là regexp, reges hay regxp) là một boy, nó sẽ so kh p v i ký t a sau ký t L Regex này cũng có th so kh p v i ký t aự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ
th 2 n u ta đi u khi n regex engine ti p t c tìm ki m sau khi đã so kh p đết tắt là regexp, reges hay regxp) là một ết tắt là regexp, reges hay regxp) là một ết tắt là regexp, reges hay regxp) là một ư: sử dụng một biểu thức chính quy không c 1 l n.ần đến Cũng nh v y, regex dog sẽ so kh p v i dog trong chu i LazyDog is not a dog Regexư: sử dụng một biểu thức chính quy không ập trình và quá trình xử lý văn bản ( Thay vì cần đến này bao g m 1 sêri 3 ký t thông thự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy khôngời gian và công sứcng Engine sẽ hi u bi u th c này là: tìm d, theo sau b i o, theo sau b i g ở lý thuyết tự động và lý thuyết ngôn ngữ ở lý thuyết tự động và lý thuyết ngôn ngữ
Chú ý r ng regex engine m c đ nh phân bi t ch hoa và ch thằm ở lý thuyết tự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh ịnh ệu, ững quy tắc cú pháp nhất định ững quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy khôngời gian và công sứcng Dog không so
kh p v i dog
b Ký t đ c bi t ự thông thường và ký tự đặc biệt ặc điểm ệm
Vì ta c n làm nhi u công vi c ph c t p h n là tìm ki m 1 đo n văn b n, cho nênần đến ệu, ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ết tắt là regexp, reges hay regxp) là một ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định
ph i tr ng d ng 1 vài ký t đ làm nh ng nhi m v đ c bi t Trong cú pháp regexả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không ự động và lý thuyết ngôn ngữ ững quy tắc cú pháp nhất định ệu, ặc thậm chí một dòng lệnh ệu,
đư: sử dụng một biểu thức chính quy không c th o lu n đây, có 11 ký t mang ý nghĩa đ c bi t: [ \ ^ $ | ? * + ( ) Chúng đả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ập trình và quá trình xử lý văn bản ( Thay vì cần đến ở lý thuyết tự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh ệu, ư: sử dụng một biểu thức chính quy không c
g i là các metacharacter.ọc máy tính Do vậy có thể nói thuật ngữ
N u c n dùng các ký t này v i ý nghĩa thông thết tắt là regexp, reges hay regxp) là một ần đến ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy khôngời gian và công sứcng, ta ph i gi i phóng nó b ng \.ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ằm ở lý thuyết tự động và lý thuyết ngôn ngữ
VD n u c n so kh p 1+1=2, thì regex đúng sẽ là 1\+1=2 Chú ý r ng 1+1=2 cũng làết tắt là regexp, reges hay regxp) là một ần đến ằm ở lý thuyết tự động và lý thuyết ngôn ngữ regex đúng, nên sẽ không báo l i, nh ng nó sẽ không cho ta k t qu nh mong mu n.ư: sử dụng một biểu thức chính quy không ết tắt là regexp, reges hay regxp) là một ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không ố tài liệu, Regex 1+1=2 sẽ so kh p v i 111=2 trong chu i 123+111=234, vì d u + đây mang ýất định ở lý thuyết tự động và lý thuyết ngôn ngữ
N u ta quên không gi i phóng ký t đ c bi t nh ng ch nó không đết tắt là regexp, reges hay regxp) là một ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh ệu, ở lý thuyết tự động và lý thuyết ngôn ngữ ững quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không c phép đ ng thì sẽ g p l i ặc thậm chí một dòng lệnh
VD: +1
H u h t các lo i cú pháp regex đ u coi { nh 1 ký t thông thần đến ết tắt là regexp, reges hay regxp) là một ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ư: sử dụng một biểu thức chính quy không ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy khôngời gian và công sứcng, tr khi nó là 1 ph nừ một số tài liệu, ần đến
c a toán t nh c l i (repetition operator), VD: {1, 3} Vì v y ta không c n gi i phóng kýử lý văn bản ( Thay vì cần đến ắt là regexp, reges hay regxp) là một ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ập trình và quá trình xử lý văn bản ( Thay vì cần đến ần đến ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định
Trang 5tự động và lý thuyết ngôn ngữ này.
Ta ch dùng \ đ gi i phóng các ký t đ c bi t, còn các ký t khác thì không nên, vì \ỉ email từ một số tài liệu, ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh ệu, ự động và lý thuyết ngôn ngữ cũng là 1 ký t đ c bi t \ khi k t h p v i 1 ký t thông thự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh ệu, ết tắt là regexp, reges hay regxp) là một ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy khôngời gian và công sứcng sẽ có ý nghĩa đ c bi t,ặc thậm chí một dòng lệnh ệu, VD: \d sẽ so kh p v i 1 ch s t 0 - 9.ững quy tắc cú pháp nhất định ố tài liệu, ừ một số tài liệu,
T t c các lo i cú pháp regex đ u cho phép gi i phóng 1 ký t đ c bi t b ng \ R tất định ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh ệu, ằm ở lý thuyết tự động và lý thuyết ngôn ngữ ất định nhi u cú pháp khác còn h tr ki u gi i phóng \Q \E T t c các ký t n m trongả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ất định ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ự động và lý thuyết ngôn ngữ ằm ở lý thuyết tự động và lý thuyết ngôn ngữ
c p \Q và \E sẽ đặc thậm chí một dòng lệnh ư: sử dụng một biểu thức chính quy không c coi nh ký t thông thư: sử dụng một biểu thức chính quy không ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy khôngời gian và công sứcng VD: \Q*\d+*\E sẽ so kh p v i đo nạn thảo QED để so khớp mẫu trong các file văn bản Sau đó văn b n *\d+* Ki u cú pháp này đả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không c h tr b i JGsoft engine, Perl, PCRE, ở lý thuyết tự động và lý thuyết ngôn ngữ
1.4.4 Tìm ki m theo v trí ến thức cơ bản về biểu thức chính quy ịch sử phát triển
Neo đ u và cu i chu ầu và cuối chuỗ ối chuỗ ỗi
M neo không so kh p v i b t kỳ 1 ký t nào Thay vào đó, chúng so kh p v i 1 v$ ất định ự động và lý thuyết ngôn ngữ ịnh trí trư: sử dụng một biểu thức chính quy không c, sau ho c gi a các ký t Chúng đặc thậm chí một dòng lệnh ững quy tắc cú pháp nhất định ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không c s d ng đ "neo" bi u th c regex vào 1ử lý văn bản ( Thay vì cần đến
v trí đ so kh p D u ^ kh p v i v trí ngay trịnh ất định ịnh ư: sử dụng một biểu thức chính quy không c ký t đ u tiên trong chu i Áp d ngự động và lý thuyết ngôn ngữ ần đến regex ^a cho chu i abc, ta sẽ đư: sử dụng một biểu thức chính quy không c a ^b sẽ không có k t qu khi so kh p v i abc, vì bết tắt là regexp, reges hay regxp) là một ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định không kh p v i ký t ngay sau v trí b t đ u c a chu i, v trí đự động và lý thuyết ngôn ngữ ịnh ắt là regexp, reges hay regxp) là một ần đến ịnh ư: sử dụng một biểu thức chính quy không c kh p b i ^.ở lý thuyết tự động và lý thuyết ngôn ngữ
Tư: sử dụng một biểu thức chính quy không ng t nh trên, $ kh p v i v trí ngay sau ký t cu i cùng c a chu i c$ sẽ kh pự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không ịnh ự động và lý thuyết ngôn ngữ ố tài liệu,
v i c trong abc, trong khi a$ không kh p
Khi s d ng regex trong ngôn ng l p trình đ ki m đ nh thông tin nh p vào tử lý văn bản ( Thay vì cần đến ững quy tắc cú pháp nhất định ập trình và quá trình xử lý văn bản ( Thay vì cần đến ịnh ập trình và quá trình xử lý văn bản ( Thay vì cần đến ừ một số tài liệu,
ngư: sử dụng một biểu thức chính quy khôngời gian và công sứci dùng, s d ng neo là r t quan tr ng VD n u ta dùng \d+ đ ki m tra xem ngử lý văn bản ( Thay vì cần đến ất định ọc máy tính Do vậy có thể nói thuật ngữ ết tắt là regexp, reges hay regxp) là một ư: sử dụng một biểu thức chính quy khôngời gian và công sứci dùng có nh p vào 1 s nguyên hay không, k t qu tr v v n có th là đúng th m chíập trình và quá trình xử lý văn bản ( Thay vì cần đến ố tài liệu, ết tắt là regexp, reges hay regxp) là một ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ẫu, nhưng nó cũng ập trình và quá trình xử lý văn bản ( Thay vì cần đến
n u ngết tắt là regexp, reges hay regxp) là một ư: sử dụng một biểu thức chính quy khôngời gian và công sứci dùng nh p qsdf4ghjk, b i \d+ kh p v i 4 Regex đúng đây ph i là ^\d+$.ập trình và quá trình xử lý văn bản ( Thay vì cần đến ở lý thuyết tự động và lý thuyết ngôn ngữ ở lý thuyết tự động và lý thuyết ngôn ngữ ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định
B i vì v trí đ u chu i ph i đở lý thuyết tự động và lý thuyết ngôn ngữ ịnh ần đến ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không c kh p trư: sử dụng một biểu thức chính quy không c khi \d+ đư: sử dụng một biểu thức chính quy không c kh p, và v trí cu i chu iịnh ố tài liệu,
ph i đả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không c kh p ngay sau đó, vì v y chu i nh p vào n u mu n kh p v i ^\d+$ thì chập trình và quá trình xử lý văn bản ( Thay vì cần đến ập trình và quá trình xử lý văn bản ( Thay vì cần đến ết tắt là regexp, reges hay regxp) là một ố tài liệu, ỉ email từ một số tài liệu,
có th là 1 chu i các ch s (d u + là toán t nh c l i, dùng đ nh c l i ký t trững quy tắc cú pháp nhất định ố tài liệu, ất định ử lý văn bản ( Thay vì cần đến ắt là regexp, reges hay regxp) là một ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ắt là regexp, reges hay regxp) là một ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không c nó
1 ho c nhi u l n)ặc thậm chí một dòng lệnh ần đến
M t chú ý khác là ta có th d dàng m c l i v i ký t tr ng Trong ngôn ng Perlột ễ dàng ắt là regexp, reges hay regxp) là một ự động và lý thuyết ngôn ngữ ắt là regexp, reges hay regxp) là một ững quy tắc cú pháp nhất định
ch ng h n, khi đ c vào 1 dòng t 1 file text, ký t line break cũng sẽ đ% ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ọc máy tính Do vậy có thể nói thuật ngữ ừ một số tài liệu, ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không c l u vào bi n.ư: sử dụng một biểu thức chính quy không ết tắt là regexp, reges hay regxp) là một
Do đó trư: sử dụng một biểu thức chính quy không c khi ti n hành ki m đ nh thông tin nh p vào, ta c n ch t b các ký t tr ngết tắt là regexp, reges hay regxp) là một ịnh ập trình và quá trình xử lý văn bản ( Thay vì cần đến ần đến ặc thậm chí một dòng lệnh $ ự động và lý thuyết ngôn ngữ ắt là regexp, reges hay regxp) là một
đ u và cu i ^\s+ kh p v i ký t tr ng đ u và \s+$ kh p v i ký t tr ng cu i.ần đến ố tài liệu, ự động và lý thuyết ngôn ngữ ắt là regexp, reges hay regxp) là một ần đến ự động và lý thuyết ngôn ngữ ắt là regexp, reges hay regxp) là một ố tài liệu,
Trang 6S d ng ^ và $ đ neo đ u và cu i 1 dòng ử dụng ^ và $ để neo đầu và cuối 1 dòng ụng ^ và $ để neo đầu và cuối 1 dòng ể neo đầu và cuối 1 dòng ầu và cuối chuỗ ối chuỗ
N u chu i c n x lý đết tắt là regexp, reges hay regxp) là một ần đến ử lý văn bản ( Thay vì cần đến ư: sử dụng một biểu thức chính quy không c vi t trên nhi u dòng, nh ki u first line\nsecond line (\nết tắt là regexp, reges hay regxp) là một ư: sử dụng một biểu thức chính quy không
là ký t line break), ta có th mu n làm vi c v i t ng dòng h n là v i c chu i Do đó,ự động và lý thuyết ngôn ngữ ố tài liệu, ệu, ừ một số tài liệu, ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định các regex engine đư: sử dụng một biểu thức chính quy không c th o lu n trong lo t bài này còn có thêm ch c năng m r ng ýả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ập trình và quá trình xử lý văn bản ( Thay vì cần đến ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ở lý thuyết tự động và lý thuyết ngôn ngữ ột nghĩa c a các m neo ^ v a có th kh p v i v trí đ u chu i (tr$ ừ một số tài liệu, ịnh ần đến ư: sử dụng một biểu thức chính quy không c ký t f trong VDự động và lý thuyết ngôn ngữ trên), v a có th kh p v i v trí ngay sau m i line break (gi a \n và s) Cũng nh v y, $ừ một số tài liệu, ịnh ững quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không ập trình và quá trình xử lý văn bản ( Thay vì cần đến
v a có th kh p v i v trí cu i chu i (sau ký t e cu i cùng), v a có th kh p v i v tríừ một số tài liệu, ịnh ố tài liệu, ự động và lý thuyết ngôn ngữ ố tài liệu, ừ một số tài liệu, ịnh
trư: sử dụng một biểu thức chính quy không c m i line break (gi aững quy tắc cú pháp nhất định e và \n)
Trong ngôn ng l p trình, ta ph i kích ho t ch c năng m r ng này, đững quy tắc cú pháp nhất định ập trình và quá trình xử lý văn bản ( Thay vì cần đến ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ở lý thuyết tự động và lý thuyết ngôn ngữ ột ư: sử dụng một biểu thức chính quy không c g i là ch đọc máy tính Do vậy có thể nói thuật ngữ ết tắt là regexp, reges hay regxp) là một ột
đa dòng (multi-line mode) VD trong Perl, ta làm vi c này b ng cách thêm m vào sauệu, ằm ở lý thuyết tự động và lý thuyết ngôn ngữ
đo n mã regex, VD: m/^regex$/m;ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó
Neo đ u và cu i chu i vĩnh c u ầu và cuối chuỗ ối chuỗ ỗ ử dụng ^ và $ để neo đầu và cuối 1 dòng
\A sẽ ch kh p v i v trí đ u chu i, và \Z ch kh p v i v trí cu i chu i Chúng khôngỉ email từ một số tài liệu, ịnh ần đến ỉ email từ một số tài liệu, ịnh ố tài liệu, bao gi kh p v trí các line break, th m chí c khi ch đ "multiline mode" đời gian và công sức ở lý thuyết tự động và lý thuyết ngôn ngữ ịnh ập trình và quá trình xử lý văn bản ( Thay vì cần đến ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ết tắt là regexp, reges hay regxp) là một ột ư: sử dụng một biểu thức chính quy không c kích
ho t Đi u này đúng cho t t c các lo i cú pháp regex đạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ất định ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ư: sử dụng một biểu thức chính quy không c th o lu n trong bài này.ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ập trình và quá trình xử lý văn bản ( Thay vì cần đến
1.4.5 Các l p ký t ớp ký tự ự thông thường và ký tự đặc biệt
S d ng l p ký t , ta sẽ khi n regex engine ch ch n ra 1 ký t đ so kh p Đ sử lý văn bản ( Thay vì cần đến ự động và lý thuyết ngôn ngữ ết tắt là regexp, reges hay regxp) là một ỉ email từ một số tài liệu, ọc máy tính Do vậy có thể nói thuật ngữ ự động và lý thuyết ngôn ngữ ử lý văn bản ( Thay vì cần đến
d ng, ta đ t các ký t c n so kh p vào 2 d u [ và ] VD: đ so kh p ký t a ho c e, taặc thậm chí một dòng lệnh ự động và lý thuyết ngôn ngữ ần đến ất định ự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh dùng [ae] Nh v y bi u th c gr[ae]y sẽ kh p v i gray ho c grey.ư: sử dụng một biểu thức chính quy không ập trình và quá trình xử lý văn bản ( Thay vì cần đến ặc thậm chí một dòng lệnh
L p ký t ch so kh p v i 1 ký t đ n Nh v y gr[ae]y sẽ không kh p v i graay,ự động và lý thuyết ngôn ngữ ỉ email từ một số tài liệu, ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không ập trình và quá trình xử lý văn bản ( Thay vì cần đến graey,v.v Th t các ký t trong l p không quan tr ng K t qu tr v luôn gi ngự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ọc máy tính Do vậy có thể nói thuật ngữ ết tắt là regexp, reges hay regxp) là một ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ố tài liệu, nhau
Đ xác đ nh 1 vùng ký t trong l p ký t , ta s d ng d u - VD: [0-9] so kh p v i 1ịnh ự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ử lý văn bản ( Thay vì cần đến ất định
ch s t 0 - 9 Có th s d ng nhi u vùng ký t ho c k t h p vùng ký t v i ký tững quy tắc cú pháp nhất định ố tài liệu, ừ một số tài liệu, ử lý văn bản ( Thay vì cần đến ự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh ết tắt là regexp, reges hay regxp) là một ự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ
đ n VD: [0-9a-fA-F] so kh p v i 1 ch s h 16, không phân bi t ch hoa, thững quy tắc cú pháp nhất định ố tài liệu, ệu, ệu, ững quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy khôngời gian và công sứcng [0-9a-fxA-FX] so kh p v i 1 ch s h 16 ho c ch cái X, không phân bi t ch hoa,ững quy tắc cú pháp nhất định ố tài liệu, ệu, ặc thậm chí một dòng lệnh ững quy tắc cú pháp nhất định ệu, ững quy tắc cú pháp nhất định
thư: sử dụng một biểu thức chính quy khôngời gian và công sứcng Cũng nh trên, th t các vùng không quan tr ng.ư: sử dụng một biểu thức chính quy không ự động và lý thuyết ngôn ngữ ọc máy tính Do vậy có thể nói thuật ngữ
L p ký t ph đ nh ớp bên trái nhất ự phủ định ủ định ịnh
Trang 7Đ t d u ^ sau [ trong l p ký t sẽ ph đ nh l p ký t đó K t qu là l p ký t sẽ soặc thậm chí một dòng lệnh ất định ự động và lý thuyết ngôn ngữ ịnh ự động và lý thuyết ngôn ngữ ết tắt là regexp, reges hay regxp) là một ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ự động và lý thuyết ngôn ngữ
kh p v i b t kỳ ký t nào không n m trong l p ký t đó L p ký t ph đ nh có th soất định ự động và lý thuyết ngôn ngữ ằm ở lý thuyết tự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ịnh
kh p v i c ký t line break.ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ự động và lý thuyết ngôn ngữ
Chú ý r ng l p ký t ph đ nh v n ph i đằm ở lý thuyết tự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ịnh ẫu, nhưng nó cũng ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không c so kh p v i 1 ký t VD: q[^u] khôngự động và lý thuyết ngôn ngữ
ph i là "q không theo sau b i u" mà là "q theo sau b i 1 ký t không ph i u" Vì v y nóả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ở lý thuyết tự động và lý thuyết ngôn ngữ ở lý thuyết tự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ập trình và quá trình xử lý văn bản ( Thay vì cần đến
sẽ không so kh p v i q trong chu i Iraq, và sẽ so kh p v i q và space trong chu i Iraq is
a country
Metacharacter trong l p ký t ớp bên trái nhất ự phủ định
Trong l p ký t , các ký t mang ý nghĩa đ c bi t hay metacharacter ch bao g m: ] \ự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh ệu, ỉ email từ một số tài liệu,
^ - Các metacharacter nói ph n trở lý thuyết tự động và lý thuyết ngôn ngữ ần đến ư: sử dụng một biểu thức chính quy không c khi đ t trong l p ký t sẽ ch đặc thậm chí một dòng lệnh ự động và lý thuyết ngôn ngữ ỉ email từ một số tài liệu, ư: sử dụng một biểu thức chính quy không c coi nh kýư: sử dụng một biểu thức chính quy không
t thông thự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy khôngời gian và công sứcng, và do đó không c n ph i gi i phóng VD: đ tìm ký t * ho c +, taần đến ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh
Đ đ t ký t \ vào trong l p ký t v i nghĩa thông thặc thậm chí một dòng lệnh ự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy khôngời gian và công sứcng, c n gi i phóng nó b ng 1 kýần đến ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ằm ở lý thuyết tự động và lý thuyết ngôn ngữ
t \ khác VD: [\\x] sẽ kh p v i ký t \ ho c x Các ký t ] ^ - n u mu n dùng theoự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh ự động và lý thuyết ngôn ngữ ết tắt là regexp, reges hay regxp) là một ố tài liệu, nghĩa thông thư: sử dụng một biểu thức chính quy khôngời gian và công sứcng cũng ph i đả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không c gi i phóng b ng \ ho c đ t nó v trí mà nó sẽả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ằm ở lý thuyết tự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh ặc thậm chí một dòng lệnh ở lý thuyết tự động và lý thuyết ngôn ngữ ịnh không có ý nghĩa đ c bi t Ta nên dùng cách th 2 đ bi u th c regex trông d nhìnặc thậm chí một dòng lệnh ệu, ễ dàng
V i ^, đ t nó b t kỳ ch nào tr v trí ngay sau [ VD: [x^] sẽ kh p v i x ho c ^.ặc thậm chí một dòng lệnh ở lý thuyết tự động và lý thuyết ngôn ngữ ất định ừ một số tài liệu, ịnh ặc thậm chí một dòng lệnh
V i ], đ t nó ngay sau [ ho c [^ VD: []x] sẽ kh p v i ] ho c x [^]x] sẽ kh p v i b t kỳặc thậm chí một dòng lệnh ặc thậm chí một dòng lệnh ặc thậm chí một dòng lệnh ất định
ký t nào không ph i là ] ho c x.ự động và lý thuyết ngôn ngữ ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ặc thậm chí một dòng lệnh
V i -, đ t nó ngay sau [ ho c [^ , ho c ngay trặc thậm chí một dòng lệnh ặc thậm chí một dòng lệnh ặc thậm chí một dòng lệnh ư: sử dụng một biểu thức chính quy không c ] VD: c [-x] và [x-] đ u so kh pả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định
v i - ho c x.ặc thậm chí một dòng lệnh
Có th s d ng t t c các ký t không in đử lý văn bản ( Thay vì cần đến ất định ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không c trong l p ký t gi ng nh dùngự động và lý thuyết ngôn ngữ ố tài liệu, ư: sử dụng một biểu thức chính quy không chúng ngoài l p ký t VD: [$\u20AC] sẽ kh p v i $ ho c ký t đ ng euro (v i gi đ nhự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh ự động và lý thuyết ngôn ngữ ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ịnh
cú pháp regex đang dùng h tr unicode)
JGsoft engine, Perl và PCRE còn h tr ki u \Q \E trong l p ký t đ gi i phóng 1ự động và lý thuyết ngôn ngữ ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định chu i ký t VD: [\Q[-]\E] sẽ kh p v i [ ho c - ho c ].ự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh ặc thậm chí một dòng lệnh
Cú pháp regex c a POSIX l i x lý \ trong l p ký t nh 1 ký t thông thạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ử lý văn bản ( Thay vì cần đến ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy khôngời gian và công sứcng Đ ng nghĩa v i vi c ta không th dùng \ đ gi i phóng ] ^ - Đ làm vi c này ta ch còn cáchệu, ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ệu, ỉ email từ một số tài liệu,
Trang 8đ t chúng vào các v trí nh trình bày trên Ngoài ra đi u này cũng đ ng nghĩa v iặc thậm chí một dòng lệnh ịnh ư: sử dụng một biểu thức chính quy không ở lý thuyết tự động và lý thuyết ngôn ngữ
vi c các cú pháp t t (shorthand, VD: \d) không còn hi u l c.ệu, ắt là regexp, reges hay regxp) là một ệu, ự động và lý thuyết ngôn ngữ
L p ký t vi t t t (Shorthand Character Classes) ớp bên trái nhất ự phủ định ết quả so khớp bên trái nhất ắt (Shorthand Character Classes)
\d là d ng t t c a [0-9].ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ắt là regexp, reges hay regxp) là một
\w đư: sử dụng một biểu thức chính quy không c g i là "ký t t " (word character) Chính xác nh ng ký t nào đọc máy tính Do vậy có thể nói thuật ngữ ự động và lý thuyết ngôn ngữ ừ một số tài liệu, ững quy tắc cú pháp nhất định ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không c kh p
v i nó thay đ i tuỳ theo m i lo i cú pháp regex Trong t t c các lo i cú pháp, nó sẽ baoổ biển được sử dụng cho biểu thức chính quy (grep là một từ có ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ất định ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó
g m [A-Za-z] Trong h u h t các lo i cú pháp, nó cũng bao g m c d u _ và ch s ần đến ết tắt là regexp, reges hay regxp) là một ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ất định ững quy tắc cú pháp nhất định ố tài liệu,
\s đư: sử dụng một biểu thức chính quy không c g i là "ký t tr ng" (whitespace character) Nó kh p v i ký t nào thì cũngọc máy tính Do vậy có thể nói thuật ngữ ự động và lý thuyết ngôn ngữ ắt là regexp, reges hay regxp) là một ự động và lý thuyết ngôn ngữ tùy thu c vào t ng lo i cú pháp Trong ki u cú pháp th o lu n đây, nó bao g m [\t].ột ừ một số tài liệu, ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ập trình và quá trình xử lý văn bản ( Thay vì cần đến ở lý thuyết tự động và lý thuyết ngôn ngữ Nghĩa là \s sẽ kh p v i space ho c tab Trong h u h t cú pháp , nó cũng bao g m c kýặc thậm chí một dòng lệnh ần đến ết tắt là regexp, reges hay regxp) là một ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định
t carriage return ho c line feed, nghĩa là [\t\r\n] M t s cú pháp khác l i bao g mự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh ột ố tài liệu, ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó thêm c các ký t không in đả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không c hi m khi dùng nh vertical tab ho c form feed.ết tắt là regexp, reges hay regxp) là một ư: sử dụng một biểu thức chính quy không ặc thậm chí một dòng lệnh
Các l p ký t vi t t t có th đự động và lý thuyết ngôn ngữ ết tắt là regexp, reges hay regxp) là một ắt là regexp, reges hay regxp) là một ư: sử dụng một biểu thức chính quy không c dùng c trong l n ngoài c p [] VD: \s\d kh p v iả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ẫu, nhưng nó cũng ặc thậm chí một dòng lệnh
1 ký t tr ng theo sau b i 1 ch s [\s\d] kh p v i 1 ký t đ n là 1 ký t tr ng ho c 1ự động và lý thuyết ngôn ngữ ắt là regexp, reges hay regxp) là một ở lý thuyết tự động và lý thuyết ngôn ngữ ững quy tắc cú pháp nhất định ố tài liệu, ự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ắt là regexp, reges hay regxp) là một ặc thậm chí một dòng lệnh
ch s Khi áp d ng vào chu i 1 + 2 = 3, regex th 1 sẽ kh p v i 2 (space và 2), trongững quy tắc cú pháp nhất định ố tài liệu, khi regex th 2 sẽ kh p v i 1 [\da-fA-F] kh p v i 1 ch s h 16, gi ng nh [0-9a-fA-ững quy tắc cú pháp nhất định ố tài liệu, ệu, ố tài liệu, ư: sử dụng một biểu thức chính quy không F]
L p ký t vi t t t ph đ nh (Negated Shorthand Character Classes) ớp bên trái nhất ự phủ định ết quả so khớp bên trái nhất ắt (Shorthand Character Classes) ủ định ịnh
\D tư: sử dụng một biểu thức chính quy không ng đư: sử dụng một biểu thức chính quy không ng [^\d]
\W tư: sử dụng một biểu thức chính quy không ng đư: sử dụng một biểu thức chính quy không ng [^\w]
\S tư: sử dụng một biểu thức chính quy không ng đư: sử dụng một biểu thức chính quy không ng [^\s]
1.4.6 Bi u th c l p theo đ dài ểu thức chính quy ức chính quy ặc điểm ộng của biểu thức chính quy
Bi u th c chính quy s d ng các ký hi u + * ? đ th hi n vi c l p các ký t theo đử lý văn bản ( Thay vì cần đến ệu, ệu, ệu, ặc thậm chí một dòng lệnh ự động và lý thuyết ngôn ngữ ột dài
Ký t * : mang ý nghĩa l p l i ký t , nhóm ký t trự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không c nó t 0 đ n n l nừ một số tài liệu, ết tắt là regexp, reges hay regxp) là một ần đến
Ký t + : mang ý nghĩa l p l i ký t , nhóm ký t n trự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không c nó t 1 đ n n l nừ một số tài liệu, ết tắt là regexp, reges hay regxp) là một ần đến
Trang 9Ký t ? : mang ý nghĩa l p l i ký t , nhóm ký t trự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không c nó 0 ho c 1 l n.ặc thậm chí một dòng lệnh ần đến
Ngoài ra bi u th c chính quy còn cho phép quy đ nh bi u th c l p l i chính xác s l n.ịnh ặc thậm chí một dòng lệnh ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ố tài liệu, ần đến {x}: Mang ý nghĩa l p l i ký t , nhóm ký t trặc thậm chí một dòng lệnh ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không c nó đúng x l nần đến
{x,y}: Mang ý nghĩa l p l i ký t , nhóm ký t trặc thậm chí một dòng lệnh ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không c nó t x đ n y l nừ một số tài liệu, ết tắt là regexp, reges hay regxp) là một ần đến
{x,}: Mang ý nghĩa l p l i ký t , nhóm ký t trặc thậm chí một dòng lệnh ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không c nó l n h n b ng x l nằm ở lý thuyết tự động và lý thuyết ngôn ngữ ần đến
1.4.7 Phân nhóm
Bi u th c chính quy s d ng các ký t m ngo c tròn ( và đóng ngo c tròn ) đử lý văn bản ( Thay vì cần đến ự động và lý thuyết ngôn ngữ ở lý thuyết tự động và lý thuyết ngôn ngữ ặc thậm chí một dòng lệnh ặc thậm chí một dòng lệnh phân nhóm các ký t ự động và lý thuyết ngôn ngữ
Ví d /([a-z0-9]+)@([a-z]+)/ : bi u di n m t bi u th c chính quy so kh p v i ễ dàng ột các chu i ký t g m các ký t t a đ n z ho c t 0 đ n 9 là m t nhóm đ ng li n nhau ự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ ừ một số tài liệu, ết tắt là regexp, reges hay regxp) là một ặc thậm chí một dòng lệnh ừ một số tài liệu, ết tắt là regexp, reges hay regxp) là một ột
l p l i ít nh t 1 l n theo sau là ký t @ ti p theo là m t nhóm ký t t a đ n z l p l i ít ặc thậm chí một dòng lệnh ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ất định ần đến ự động và lý thuyết ngôn ngữ ết tắt là regexp, reges hay regxp) là một ột ự động và lý thuyết ngôn ngữ ừ một số tài liệu, ết tắt là regexp, reges hay regxp) là một ặc thậm chí một dòng lệnh ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó
nh t 1 l n.ất định ần đến
Trang 10Ph n 2: Th vi n bi u th c chính quy trong ngôn ng l p trình PHP ần 1: Biểu thức chính quy ư ệm ểu thức chính quy ức chính quy ữ lập trình PHP ập trình PHP
PCRE vi t t t cho Perl-Compatible Regular Expressions Đây là tên c a m t thết tắt là regexp, reges hay regxp) là một ắt là regexp, reges hay regxp) là một ột ư: sử dụng một biểu thức chính quy không
vi n mã ngu n m đệu, ở lý thuyết tự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không c vi t b ng ngôn ng C b i Phillip Hazel Th vi n tết tắt là regexp, reges hay regxp) là một ằm ở lý thuyết tự động và lý thuyết ngôn ngữ ững quy tắc cú pháp nhất định ở lý thuyết tự động và lý thuyết ngôn ngữ ư: sử dụng một biểu thức chính quy không ệu, ư: sử dụng một biểu thức chính quy không ng thích
v i h u h t các trình biên d ch C và các h đi u hành Nhi u ngần đến ết tắt là regexp, reges hay regxp) là một ịnh ệu, ư: sử dụng một biểu thức chính quy khôngời gian và công sứci đã phát tri n các
th c vi n t PCRE làm cho nó tư: sử dụng một biểu thức chính quy không ệu, ừ một số tài liệu, ư: sử dụng một biểu thức chính quy không ng thích v i các ngôn ng l p trình khác Ví d những quy tắc cú pháp nhất định ập trình và quá trình xử lý văn bản ( Thay vì cần đến ư: sử dụng một biểu thức chính quy không
m t s Delphi component ch đ n gi n là hàm bao quanh th vi n PCRE biên d chột ố tài liệu, ỉ email từ một số tài liệu, ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không ệu, ịnh thành m t th vi Win32 DLL Th vi n cũng bao g m nhi u phiên b n Linux đột ư: sử dụng một biểu thức chính quy không ệu, ư: sử dụng một biểu thức chính quy không ệu, ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không c chia s nh th vi n so và các file h ẻ như thư viện so và các file h ư: sử dụng một biểu thức chính quy không ư: sử dụng một biểu thức chính quy không ệu,
Các hàm preg PHP và các l p REALbasic Regex đư: sử dụng một biểu thức chính quy không c xây d ng d a trên PCRE.ự động và lý thuyết ngôn ngữ ự động và lý thuyết ngôn ngữ PCRE th c hi n g n nh cú pháp bi u th c chính quy c a Perl 5.8, ch có s h tr cácự động và lý thuyết ngôn ngữ ệu, ần đến ư: sử dụng một biểu thức chính quy không ỉ email từ một số tài liệu, ự động và lý thuyết ngôn ngữ thu c tính Unicode v i \p là không đ y đ m c dù h u h t nh ng ph n quan tr ngột ần đến ặc thậm chí một dòng lệnh ần đến ết tắt là regexp, reges hay regxp) là một ững quy tắc cú pháp nhất định ần đến ọc máy tính Do vậy có thể nói thuật ngữ
nh t đã đất định ư: sử dụng một biểu thức chính quy không c h tr
S d ng PCRE r t đ n gi n Trử lý văn bản ( Thay vì cần đến ất định ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không c khi có th s d ng m t bi u th c chính quyử lý văn bản ( Thay vì cần đến ột
nó c n đần đến ư: sử dụng một biểu thức chính quy không c chuy n đ i sang đ nh d ng nh phân đ c i thi n hi u qu Đ làm đổ biển được sử dụng cho biểu thức chính quy (grep là một từ có ịnh ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ịnh ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ệu, ệu, ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không c
đi u này c n ph i g i hàm pcre_complie() Hàm sẽ tr v m t con tr đ n các đ nhần đến ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ọc máy tính Do vậy có thể nói thuật ngữ ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ột $ ết tắt là regexp, reges hay regxp) là một ịnh
d ng nh phân B n không th làm b t c đi u gì v i k t qu ngo i tr vi c s d ngạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ịnh ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ất định ết tắt là regexp, reges hay regxp) là một ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ừ một số tài liệu, ệu, ử lý văn bản ( Thay vì cần đến
nó đ th c hi n các hàm pcre khác.ự động và lý thuyết ngôn ngữ ệu,
Đ s d ng bi u th c chính quy, hàm pcre_exec() s d ng con tr đử lý văn bản ( Thay vì cần đến ử lý văn bản ( Thay vì cần đến $ ư: sử dụng một biểu thức chính quy không c tr vả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định
v i hàm pcre_complie(), m ng ký t mà b n mu n tìm ki m và s các ký t t ng m ng.ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ự động và lý thuyết ngôn ngữ ạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ố tài liệu, ết tắt là regexp, reges hay regxp) là một ố tài liệu, ự động và lý thuyết ngôn ngữ $ ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định
B n cũng c n ph i s d ng con tr đ xác đ nh đạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ần đến ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ử lý văn bản ( Thay vì cần đến $ ịnh ư: sử dụng một biểu thức chính quy không c m ng các s nguyên n i mà hàmả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ố tài liệu, pcre_exec() sẽ l u tr k t qu , cũng nh chi u dài c a m ng các s nguyên Chi u dàiư: sử dụng một biểu thức chính quy không ững quy tắc cú pháp nhất định ết tắt là regexp, reges hay regxp) là một ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ố tài liệu,
c a m ng ph i b ng s lả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ằm ở lý thuyết tự động và lý thuyết ngôn ngữ ố tài liệu, ư: sử dụng một biểu thức chính quy không ng c a các nhóm mà b n mu n h tr c ng thêm 1 sau đóạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ố tài liệu, ột nhân 3 Hàm sẽ tr v -1 n u không tìm th y k t qu , ngả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ết tắt là regexp, reges hay regxp) là một ất định ết tắt là regexp, reges hay regxp) là một ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ư: sử dụng một biểu thức chính quy không c l i nó sẽ tr v s lạn thảo QED để so khớp mẫu trong các file văn bản Sau đó ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ố tài liệu, ư: sử dụng một biểu thức chính quy không ng các nhóm th a mãn c ng v i 1 N u s l$ ột ết tắt là regexp, reges hay regxp) là một ố tài liệu, ư: sử dụng một biểu thức chính quy không ng th a mãn nhi u h n kích th$ ư: sử dụng một biểu thức chính quy không c c a
m ng k t qu tr v sẽ là 0 Hai s nguyên đ u tiên trong m ng ch a v trí b t đ uả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ết tắt là regexp, reges hay regxp) là một ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ố tài liệu, ần đến ả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định ịnh ắt là regexp, reges hay regxp) là một ần đến
c a bi u th c đư: sử dụng một biểu thức chính quy không c tìm th y và s byte trong bi u th c đất định ố tài liệu, ư: sử dụng một biểu thức chính quy không c tìm th y Các c p sất định ặc thậm chí một dòng lệnh ố tài liệu, nghuyên ch a v trí b t đ u và chi u dài c a các tham chi u ngịnh ắt là regexp, reges hay regxp) là một ần đến ết tắt là regexp, reges hay regxp) là một ư: sử dụng một biểu thức chính quy không c Vì v y array[n*2]ập trình và quá trình xử lý văn bản ( Thay vì cần đến
là các v trí b t đ u c a các chu i th a mãn bi u th c chính quy và các array[n*2+1] làịnh ắt là regexp, reges hay regxp) là một ần đến $
đ dài tột ư: sử dụng một biểu thức chính quy không ng ng c a các chu i