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

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

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 Giới thiệu về biểu thức chính quy – Introduction to Regular expression 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

Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Binh Tran Thanh

Drupal Consultant

Started my career as a drupal8 developer in EM Solutions . I love learning Web technologies like HTML, CSS, PHP, Jquery Ajax and Drupal backend . Currently working as a drupal backend developer.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 

Facebook bắt đầu triển khai dự án Internet miễn phí

Internet.org là đại diện cho tham vọng của Facebook đem Internet miễn phí đến người dùng trên toàn thế giới

Virtuous Doubleshot v1.1.3 for Android

Virtuous Doubleshot v1.1.3 for Android

eViL_D has released an update to Virtuous Doubleshot v1.1.3. The latest version is now 1.1.3.

Thuật ngữ Cloud computing là gì ?

Thuật ngữ Cloud computing là gì ?

Thuật ngữ “cloud computing” ra đời giữa năm 2007 không phải để nói về một trào lưu mới, mà để khái quát lại các hướng đi của cơ sở hạ tầng thông tin vốn đã và đang diễn ra từ mấy năm qua.

Công ty diệt chuột T&C

 

Diet con trung