Giới thiệu về biểu thức chính quy – Introduction to Regular expression [1]

images

     Bài viết này sẽ giới thiệu một cách tổng quan về regular expression (biểu thức chính quy). Giải thích vai trò của regular expression và giới thiệu một số công cụ để chúng ta dễ dàng tìm hiểu, sáng tạo và debug.

1. Định nghĩa biểu thức chính quy (regular expression defined)

Biểu thức chính quy (regular expression, viết tắt là regexp, regex 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. Biểu thức chính quy thường được dùng trong các trình biên tập văn bản và các tiện ích tìm kiếm và xử lý văn bản dựa trên các mẫu được quy định. Nhiều ngôn ngữ lập trình cũng hỗ trợ biểu thức chính quy trong việc xử lý chuỗi, chẳng hạn như C#, Perl có bộ máy mạnh mẽ để xử lý biểu thức chính quy được xây dựng trực tiếp trong cú pháp của chúng. Bộ các trình tiện ích (gồm trình biên tập sed và trình lọc grep) đi kèm các bản phân phối Unix có vai trò đầu tiên trong việc phổ biến khái niệm biểu thức chính quy.

–   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). Một biểu thức có thể được thực hiện trong một phần mềm bằng cách sử dụng một bộ xác định giới hạn tự động (Deterministic Finite Automation – DFA). DFA là một trạng thái xác định và không sử dụng cơ chế quay lui (backtracking).

–  Nếu bạn sử dụng tốt những kỹ năng về regular expression. Chúng sẽ đơn giản hơn nhiều trong lập trình và quá trình xử lý văn bản, và có những vấn đề sẽ không thể giải quyết được nếu không sử dụng regular expression. Bạn sẽ cần đến hàng trăm thủ tục để trích xuất tất cả các địa chỉ email từ một số tài liệu, đây có thể nói là một việc làm tẻ nhạc và vất vã. Nhưng với regular expression bạn 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.

–   Nói đi thì cũng phải nói lại, Regular expression cũng thường đem đến cho người sử dụng những 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… Do đó dừng vội phát biểu: “Tôi biết regular expression và tôi sẽ sử dụng nó”. Để sử dụng regular expression bạn phải có một kiến thức từ cơ bản đến nâng cao về những biểu thức và cách thức hoạt động của nó trong các ngôn ngữ lập trình.

–   Regular expression là một công cụ mạnh mẽ trong việc thao tác và trích xuất văn bản trên máy tính. Do đó nắm vững các biểu thức chính quy sẽ giúp bạn tiết kiệm nhiều thời gian và công sức.

2. Khai báo sử dụng regular expression trong các ngôn ngữ lập trình

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.

3. Những công cụ làm việc với biểu thức chính quy (Tools for Working with Regular Expression)

–   Các công cụ được giới thiệu trong phần này sẽ giúp chúng ta xây dựng, kiểm tra lỗi, kiểm tra cú pháp và những thông tin phản hồi hỗ trợ chúng ta lập trình tốt hơn. Bạn nên kiểm tra biểu thức chính quy của mình xây dựng trong những công cụ này để kiểm tra độ chính xác của biểu thức đó.

3.1. RegexBuddy

image

–   Regexbuddy là một công cụ đầy đủ các tính năng nhất hiện nay để tạo lập, kiểm tra và thực thi các biểu thức chính quy. Nó có bộ biểu thức chính quy cho những ngôn ngữ lập trình khác nhau như: .NET, Java,… Và cho phép chuyển đổi biểu thức chính quy giữa các ngôn ngữ lập trình.

–   RegexBuddy được thiết kế bởi Jan Goyvaerts (là một chuyên gia về Regular Expression).

–   RegexBuddy sẽ tự động tô sáng những phần phù hợp với biểu thức chính quy của bạn, và thông báo những lỗi xuất hiện trong biểu thức chính quy (nếu có). Sau đây là một vài button thường hay sử dụng trong RegexBuddy:

  • List All: hiển thị một danh sách tất cả các chuỗi phù hợp với biểu thức chính quy.
  • Replace: nằm ở phía trên của màn hình. Có chức năng tìm kiếm và thay thế chuỗi được nhập vào trong textbox với biểu thức chính quy.
  • Split:  Sử lý các biểu thức chính quy bằng cách tách riêng thành các token cơ sở ở những nơi mà đối tượng của bạn được tìm thấy bằng cách sử dụng biểu thức chính quy của bạn.
  • Click bất kỳ button nào và lựa chọn Update Automatically để RegexBuddy hiển thị kết quả một cách tự động và đồng bộ khi bạn thay đổi bất cứ gì trong biểu thức chính quy.
  • Copy button: đưa biểu thức chính quy được tạo vào clipboard để bạn dán vào source code của mình.

–   Nếu bạn có bất cứ thắc mắc nào thì có thể tạo một tài khoảng để đăng nhập vào forum và hỏi những điều đó. Tác giả Jan thường online trên diễn đàn để trả lời những thắc mắc đó.

–   RegexBuddy có thể chạy trên Windows 98, ME, 2000, XP, Vista and Windows 7. Còn có thể chạy tốt trên các môi trường như: Mware, Parallels, CrossOver Office. Bạn có thể download RegexBuddy tại: http://www.regexbuddy.com/RegexBuddyCookbook.exe. Đây là bản dùng thử 7 ngày (vì đây là phần mềm trả phí).

3.2 RegexPal

–   RegexPal là một trình kiểm tra biểu thức chính quy online được tạo bởi tác giả Steven Levithan. Bạn chỉ âần một trình duyệt web hiện đại và một đường truyền internet là có thể sử dụng nó.  RegexPal được viết hoàn toàn bằng JavaScript, do đó nó chỉ hỗ trợ ngôn ngữ JavasScript.

image

–   RegexPal sẽ tự động tô màu các chuỗi phù hợp với chuỗi biểu thức chính quy được nhập ở ô phía trên. Nếu bạn nhập một cú pháp sai thì RegexPal sẽ tô sáng những phần sai đó. RegexPal là công cụ tôi thường sử dụng khi viết các chương trình trên .Net để kiểm tra biểu thức chính quy của mình. Bạn có thể sử dụng và tìm hiểu thêm về RegexPal tại: http://regexpal.com/

3.3 Một vài công cụ kiểm tra biểu thức chính quy online khác (More online Regex Testers)

Để tạo một công cụ kiểm tra biểu thức chính quy online là một điều không quá khó. Nếu bạn có một kiến thức về phát triển web và những kiến thức về regular expression cần thiết thì bạn có thể tự tạo cho mình một trang như RegexPal kể trên. Và có hàng trăm người đã làm sẵn nó cho bạn. Sau đây là một số trang điển hình:

–   http://regex.larsolavtorvik.com/: Hỗ trợ PHP PCRE, PHP POSIX và JavaScript.

image

–   http://www.nregex.com/ : hỗ trợ các ngôn ngữ .NET được phát triển bởi David Seruyange.

image

–   http://www.rubular.com/: được xây dựng bởi tác giả Micheal Lovitt.

image

–  http://www.myregexp.com : là một Java applet chạy trên trình duyệt web (yêu cầu cài đặt Java trình duyệt). Trang này sử dụng thư viện java.until.regex để hỗ trợ. Do đó những biểu thức chính quy được tạo ở trang này hoàn toàn phù hợp với Java.

image

3.4 Một vài ứng dụng kiểm tra biểu thức chính quy offline (More Desktop Regular Expression Tester)

a. Expresso

–   Expresso là một ứng dụng .NET để tạo và kiểm tra biểu thức chính quy. Bạn có thể download Expresso tại http://www.ultrapico.com/Expresso.htm. Yêu cầu cài đặt .NET framework 2.0 hoặc các phiên bản mới hơn để chạy Expresso.

–   Đây là một phần mềm tính phí (60 ngày sử dụng miễn phí). Ta có thể đăng ký bản quyền miễn phí Expresso tại http://www.ultrapico.com/App/Register.aspx bằng cách nhập email  vào form giống như bên dưới. Sẽ có key đăng ký tự động gởi tới mail của bạn.

image

–   Giao diện chương trình như sau:

image

b. Regulator:

–   Regulator là một ứng dụng .NET dùng để tạo và kiểm tra biểu thức chính quy (regular expression).  Giao diện chương trình như sau:

image

c. PowerGREP

–   PowerGREP là ứng dụng được phát triển bởi  Jan Goyvaerts. Là một ứng dụng cho Windows. PowerGREP có giao diện như sau:

image

d. Windows Grep

Windows Grep là một ứng dụng Grep cũ nhất của cho Windows. Có thể download tại: http://www.wingrep.com/. Chương trình có giao diện như sau:

image

e. RegexRenamer

RegexRenamer là một ứng dụng .NET. Có thể download tại:  http://regexrenamer.sourceforge.net/. Chương trình có giao diện như sau:

image

3.5 Một số trình biên tập văn bản hỗ trợ biểu thức chính quy (Popular Text Editors)

Boxer Text Editor (PCRE)
• Dreamweaver (JavaScript)
EditPad Pro (custom flavor that combines the best of the flavors discussed in this
        book; labeled “JGsoft” in RegexBuddy)
Multi-Edit (PCRE, if you select the “Perl” option)
NoteTab (PCRE)
UltraEdit (PCRE)
TextMate (Ruby 1.9 [Oniguruma])
• NotePad++

4. Tài liệu tham khảo (reference)

–  Wikipedia tiếng Anh về Regular Expression

–   Website http://www.regular-expressions.info/

–  Regular Expression Cookbook của nhà xuất bản: O’Reilly Media

Advertisements

About thanhcuong1990

Handsome and talent!! ^^
This entry was posted in Regular Expression and tagged . Bookmark the permalink.

2 Responses to Giới thiệu về biểu thức chính quy – Introduction to Regular expression [1]

  1. Nam says:

    Hi
    Anh đang có 1 việc làm (có kinh phí) liên quan đến Regex HTML, cần chuyên gia có kinh nghiệm xử lý.
    Em gọi điện thoại cho anh theo số 0934188989
    hoặc skype nam.truongthanh
    để trao đổi chi tiết nhé.

  2. Pingback: [PHP] Dùng Regular Expressions để lấy Facebook Page ID trên URL - Online Web Development Tutorials

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s