Tìm kiếm giá sản phẩm thương mại điện tử tự động trên mạng - Pdf 15

HỌC VIỆN KỸ THUẬT QUÂN SỰ
KHOA CÔNG NGHỆ THÔNG TIN
o0o
BÁO CÁO MÔN HỌC
Chương trình dịch
Đề bài 10:
Tìm hiểu về biểu thức chính quy và viết chương trình tìm kiếm giá
của sản phẩm điện tử trên mạng internet
Giảng viên giảng dạy: TS. Hà Chí Trung
Học viên: Hoàng Nam Thắng
Nguyễn Duy Cường
Hoàng Thị Thanh
Nguyễn Thị Tuyền
Lớp: K23 - CHCNTT
Hà Nội – Năm 2012
I. BIỂU THỨC CHÍNH QUY
- 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).

đóng, phép nối kết, phép hợp, chẳng hạn: biểu thức ((0(1*)) + 1) có thể viết là
01*+ 1.
Phép toán bao đóng dương cũng có thể được sử dụng khi viết biểu thức chính
quy. Ta có thể viết rút gọn rr* hay r*r thành r
+
.
Nếu cần thiết phân biệt thì ta sẽ dùng ký hiệu r cho biểu thức chính quy r và
L(r) cho ngôn ngữ được ký hiệu bởi biểu thức chính quy r; ngược lại một cách tổng
quát, ta có thể dùng r cho cả hai.
Thí dụ 01: Một số biểu thức chính quy ký hiệu cho các ngôn ngữ:
- 00 là biểu thức chính quy biểu diễn tập {00}.
- (0+1)* ký hiệu cho tập hợp tất cả các chuỗi số 0 và số 1, kể cả chuỗi
rỗng = {ε, 0, 1, 00, 01, 10, 11, 010, 011, 0010 }
- (0+1)*00(0+1)* ký hiệu cho tập hợp tất cả các chuỗi 0,1 có ít nhất
hai số 0 liên tiếp. = {00, 000, 100, 0000, 0001, 1000, 1001, 011001, }
- (1+10)* ký hiệu cho tất cả các chuỗi 0, 1 bắt đầu bằng số 1 và không
có hai số 0 liên tiếp = {ε, 1, 10, 11, 1010, 111, 101010, }
- (0+ε)(1+10)* ký hiệu cho tất cả các chuỗi không có hai số 0 liên tiếp.
= {ε, 0, 01, 010, 1, 10, 01010, 0111, }
- (0+1)*011 ký hiệu cho tất cả các chuỗi 0, 1 tận cùng bởi 011. = {011,
0011, 1011, 00011, 11011, }
- 0*1*2* ký hiệu cho tất cả các chuỗi có một số bất kỳ các số 0, theo
sau là một số bất kỳ số 1 và sau nữa là một số bất kỳ số 2. = {ε, 0, 1, 2, 01, 02, 12,
012, 0012, 0112, }
- 00*11*22* ký hiệu cho tất cả các chuỗi trong tập 0*1*2* với ít nhất
một trong mỗi ký hiệu. 00*11*22* có thể được viết gọn thành 0
+
1
+
2

1. Mẫu tìm kiếm trong biểu thức chính quy.
- Các mẫu đơn giản (Simple pattern). Thực hiện việc tìm kiếm chính xác
theo những kí tự được chỉ ra trong mẫu.
Ví dụ: lazydog là một regex. Nó là một mẫu đơn giản nhất vì nó so khớp
(match) với đoạn text lazydog. Một match là một đoạn text so khớp với mẫu.
- Kết hợp các ký tự đơn giản và đặc biệt. Được dùng khi ta muốn tìm kiếm
các chuỗi cùng dang.
Ví dụ, ta muốn tìm kiếm một chuỗi có một kí tự xuất hiện nhiều lần hay có
nhiều kí tự trắng. Thông thường, dữ liệu do người dùng nhập vào thường có nhiều
từ. Ví dụ, biểu thức /xy*z/ sẽ tìm kiếm các chuỗi bắt đầu bẵng x, có thể có nhiều kí
tự y hay không có bên trong nó, kết thúc bởi z.
Trong chuỗi xxzzzyzxyyyzz, biểu thức sẽ trả về chuỗi con ‘xyyyz’
Phức tạp hơn một chút: \b[A-Z0-9._%+-]+@[A-Z0-9 ]+\.[A-Z]{2,4}\b Đây
là mẫu mô tả một địa chỉ email. Mẫu này có thể được dùng để tìm một địa chỉ
email trong một đoạn văn bản, hoặc kiểm tra xem một chuỗi có phải là địa chỉ
email hợp lệ hay không.
2. Biểu thức chính quy trong C#
Phải xác định cú pháp của biểu thức chính quy cho phù hợp với cấu trúc và
nội dung của dữ liệu cần kiểm tra, đây là phần khó nhất khi sử dụng biểu thức
chính quy. Biểu thức chính quy được xây dựng trên hai yếu tố: trực kiện (literal)
và siêu ký tự (metacharacter).
- Trực kiện mô tả các ký tự có thể xuất hiện trong mẫu mà bạn muốn so
trùng;
- Siêu ký tự hỗ trợ việc so trùng các ký tự đại diện (wildcard), tầm trị,
nhóm, lặp, điều kiện, và các cơ chế điều khiển khác.
Các siêu ký tự thường dùng:
Siêu
ký tự
Mô tả
. Mọi ký tự trừ ký tự xuống dòng (\n).

{n, m} Xác định có từ n đến m ký tự đứng trước nó, ví dụ A{2,4} so trùng với
AA,AAA, và AAAA nhưng không so trùng với A hoặc AAAAA.
3. Các lớp để thao tác với Regular Expression trong .NET
- .NET cung cấp một cách tiếp cận hướng đối tượng về việc so khớp chuỗi và
thay thế theo RE. System.Text.RegularExpression là namespace trên thư viện các
lớp chuẩn của .NET liên quan đến tất cả các đối tượng gắn liền với RE.
- Lớp Regex tượng trưng cho một regular expression bất di bất dịch (read-
only). Nó cũng chứa một phương thức tĩnh (static) cho phép chúng ta sử dụng
những lớp Regex khác mà khỏi khởi tạo một đối tượng khác.
Ví dụ:
string pattern = @"\s2011";
Regex myRegex = new Regex(pattern);
- Thành phần của lớp Regex:
Thuộc tính:
+Options: trả về những mục chọn được trao qua cho constructor Regex.
+RightToLeft: nhận 1 trị cho biết liệu xem regular expression dò tìm từ phải
qua trái hay không.
Phương thức:
+GetGroupNames: trả về mảng gồm toàn tên nhóm thu lượm đối với RE.
+GetGroupNumbers: trả về mảng gồm toàn số nhóm thu lượm tương ứng
với tên nhóm trên 1 mảng.
+GroupNameFromNumber: đi lấy tên nhóm tương ứng với số nhóm được
khai báo.
+IsMatch: trả về trị bool cho biết liệu xem RE có tìm thấy một so khớp hay
không trên pattern.
+Match: dò tìm trên pattern xem có xuất hiện một RE hay không rồi trả về
kết quả chính xác như là một đối tượng Match duy nhất.
+Matches: dò tìm trên pattern xem tất cả các xuất hiện của một RE có hay
không rồi trả về tất cả những so khớp thành công xem như Match được gọi nhiều
lần.

Người quản trị sẽ có khả năng vào định nghĩa các nguồn dữ liệu cũng
như các biểu thức regex để lấy dữ liệu
Thành viên của hệ thống có thể vào hệ thống tìm ra các sản phẩm từ
nhiều hệ thống thương mại điện tử khác nhau để đưa ra quyết định cho riêng mình.
b. Các chức năng của hệ thống.
Hệ thống gồm các chức năng sau
- Quản trị người dùng
- Quản trị Site
- Quản trị Link
- Quản trị Regex
- Quản trị lấy dữ liệu
- Tìm kiếm sản phẩm.
3. Triển khai hệ thống.
a. Một số giao diện khi triển khai
- Quản trị site:
- Quản trị link:
- Quản trị Regex:
- Lấy dữ liệu:
- Tìm kiếm dữ liệu:
b. Các biểu thức Regex thiết lập cho site
Sau khi làm xong phẩn quan trị chúng tôi đã viết thử một số biểu thức chính quy theo
chuẩn đã quản trị.
1.VatGia-HaTung
/>a.Cat
Stt Name Regex
1 REGION (?<REGION><div class="content menu_product".*?>[\w\W]*?</div>)
2 CAT <li class="level_1".*?>(?<CAT>[\w\W]*?)</li>
3 NAME <span lang="vi">(?<NAME>[\w\W]*?)</span>
4 URL <a href="(?<URL>[\w\W]*?)">
b.Item

a.Cat
Stt Name Regex
1 REGION <div class="header-blue">.*?class="brands">(?<REGION>[\w\W]*?)</ul>
2 CAT <li>(?<CAT>[\w\W]*?)</li>
3 NAME <a.*?>(?<NAME>[\w\W]*?)</a>
4 URL <a href="(?<URL>[\w\W]*?)">
b.Item
Stt Name Regex
1 REGION class="list-mobile"(?<REGION>[\w\W]*?)</table>
2 ITEM
<td class="image">(?<ITEM>[\w\W]*?)(vnđ</span>|Liên
hệ</span>)
3 NAME <span class="name".*?>.*?<a.*?>(?<NAME>[\w\W]*?)</a>
4 URL <span class="name".*?>.*?href="(?<URL>[\w\W]*?)">
5 IMAGE style="background:url.'(?<IMAGE>[\w\W]*?)'
6 PRICE <span class="price-value">(?<PRICE>[\w\W]*?)$
7 REGIONPAGE <div class="paging">(?<REGIONPAGE>[\w\W]*?)</div>
8 PAGE <a.*?href="(?<PAGE>[\w\W]*?)"
Kết thúc


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status