Ads

Ads
zzzz

Thursday, May 22, 2014

Cơ bản về regular expression trong C#

20Me Reviews     10:10 AM    

1. Giới thiệu:
RE là một ngôn ngữ cực mạnh dùng mô tả văn bản cũng như thao tác trên văn bản. Một RE thường được ứng dụng lên một chuỗi, nghĩa là lên một nhóm ký tự.
Chẳng hạn, ta có chuỗi sau:
Mot, Hai, Ba, Bon, NEVERLAND.
Bạn có thể trả về bất cứ hoặc tất cả các chuỗi con của nó (Hai hoặc Bon chẳng hạn) hoặc thay đổi phiên bản của những chuỗi con của nó (Mot hoặc BoN chẳng hạn).

Một RE là một kiểu mẫu văn bản gồm 2 phần: literal (trực kiện) và metacharacters (ký tự siêu).

  • Một literal đơn thuần chỉ là một ký tự (a-z) mà bạn muốn đem so khớp với chuỗi đích.
  • Metacharacters là một ký tự đặc biệt hoạt động như là 1 mệnh lệnh đối với bộ phận phân tích ngữ nghĩa (parser) của RE

Bây giờ chúng ta thử tạo một regular expression như sau:

Code:
^(From|To|Subject|Date):



RE này sẽ khớp với bất cứ chuỗi con nào miễn là chuỗi này là một hàng mới bắt đầu với “From” hoặc “To” hoặc các chữ “Subject” hoặc “Date” (Dấu ^ nghĩa là bắt đầu 1 hàng mới) chuỗi này kết thúc bởi dấu hai chấm (:).

Dấu ^ cho bộ parser của RE biết chuỗi mà ban đang truy tìm phải bắt đầu bởi một hàng mới. Các chữ “From”, “To”,.. là những literal, và những metacharacter “(“, “)”, và “|” được dùng để tạo nhóm literal và cho biết bất cứ những lựa chọn nào cũng phải khớp. Dấu ^ cũng là metacharacter, nó cho biết là khởi đầu 1 hàng. Do đó, bạn đọc hàng sau đây:

Code:
^(From|To|Subject|Date):
Như sau: “cho khớp bất cứ chuỗi con nào bắt đầu bởi một hàng mới theo sau bởi bất cứ 4 chuỗi literal: From,To,Subject và Date rồi theo sau bởi dấu hai chấm

2. Các ký tự siêu thường dùng (vô cùng quan trọng cần phải nắm)

. : đại diện cho 1 ký tự bất kỳ trừ ký tự xuống dòng \n.
\d : ký tự chữ số tương đương [0-9]
\D : ký tự ko phải chữ số
\s : ký tự khoảng trắng tương đương [ \f\n\r\t\v]
\S : ký tự không phải khoảng trắng tương đương [ ^\f\n\r\t\v]
\w : ký tự word (gồm chữ cái và chữ số, dấu gạch dưới _ ) tương đương [a-zA-Z_0-9]
\W : ký tự không phải ký tự word tương đương [^a-zA-Z_0-9]
^ : bắt đầu 1 chuỗi hay 1 dòng
$ : kết thúc 1 chuỗi hay 1 dòng
\A : bắt đầu 1 chuỗi
\z : kết thúc 1 chuỗi
| : ký tự ngăn cách so trùng tương đương với phép or (lưu ý cái này nếu muốn kết hợp nhiều điều kiện)
[abc] : khớp với 1 ký tự nằm trong nhóm là a hay b hay c.
[a-z] so trùng với 1 ký tự nằm trong phạm vi a-z, dùng dấu - làm dấu ngăn cách.
[^abc] sẽ không so trùng với 1 ký tự nằm trong nhóm, ví dụ không so trùng với a hay b hay c.
() : Xác định 1 group (biểu thức con) xem như nó là một yếu tố đơn lẻ trong pattern .ví dụ ((a(b))c) sẽ khớp với b, ab, abc.
? : khớp với đứng trước từ 0 hay 1 lần. Ví dụ A?B sẽ khớp với B hay AB.
* : khớp với đứng trước từ 0 lần trở lên . A*B khớp với B, AB, AAB
+ : khớp với đứng trước từ 1 lần trở lên. A+B khớp với AB, AAB.
{n} : n là con số, Khớp đúng với n ký tự đúng trước nó . Ví dụ A{2}) khớp đúng với 2 chữ A.
{n, } : khớp đúng với n ký tự trở lên đứng trước nó , A{2,} khớp vói AA, AAA ...
{m,n} : khớp đùng với từ m->n ký tự đứng trước nó, A{2,4} khớp vói AA,AAA,AAAA.

0 nhận xét :

© 2014-2015 Ebook-Coding Share and Learning | Distributed By My Blogger Themes | Designed By Ebook-coding