• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

RegEx với VB6

Các bài viết hướng dẫn, giúp các bạn hiểu và tiếp cận với Visual Basic nhanh hơn
Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4753
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 13 time
Been thanked: 509 time

RegEx với VB6

Gửi bàigửi bởi truongphu » T.Sáu 13/06/2008 9:35 am

Tên bài viết: Giới thiệu thư viện vbscript.dll
Tác giả: truongphu
Cấp độ bài viết: Trung bình - Khá
Tóm tắt: Giới thiệu thư viện vbscript.dll\2 : Phiên bản Microsoft VBScript Regular Expressions 1.0
(và thư viện vbscript.dll\3 : Phiên bản Microsoft VBScript Regular Expressions 5.5)


A- Giới thiệu Thư viện vbscript.dll có trong HĐH Windows XP gồm:
- Class Match có 3 properties là:
FirstIndex (As Long)
Length (As Long)
Value (As String)
(Phiên bản MS VRE 5.5 có thêm Property SubMatches As Object)

- Class MatchCollection có 2 propterties là:
Count (As Long)
Item(index As Long) As Object

- Class RegExp có 3 properties và 3 function là:
Property Global As Boolean
Property IgnoreCase As Boolean
Property Pattern As String
(Phiên bản MS VRE 5.5 có thêm Property Multiline As Boolean)

Function Execute(sourceString As String) As Object
Function Replace(sourceString As String, replaceString As String) As String
Function Test(sourceString As String) As Boolean

- (Phiên bản MS VRE 5.5 có thêm Class SubMatches với 2 Properties:
Property Count As Long
Property Item(index As Long))

B- Tường minh các Properties và Functions
Thế là từ đây bạn có quyền viết code VB6 như sau: (sau khi add thư viện, sẽ được hổ trợ IDE)

Mã: Chọn hết

  1. Dim objRegEx As New RegExp


hoặc VBS: (khỏi add thư viện, chép là chạy, đương nhiên không được hổ trợ IDE)

Mã: Chọn hết

  1. Set objRegEx = CreateObject("VBScript.RegExp")


Trở lại bài "Replace nhiều ký tự số trong chuỗi... "

http://www.caulacbovb.com/forum/viewtopic.php?f=27&p=12072#p11911

2 câu code sau có kết quả tương đương khi gọi hàm Replace để loại các ký tự số:

Mã: Chọn hết

  1. objRegEx.Pattern = "[^A-Za-z]"      '(a)


Mã: Chọn hết

  1. objRegEx.Pattern = "[\d]"               '(b)


Mã: Chọn hết

  1. MsgBox objRegEx.Replace("1ca6u0la5c0bo650v7b89", "")  '--> "caulacbovb"


ý nghĩa của (a) là: Những ký tự KHÔNG PHẢI từ A-Z và từ a-z
ý nghĩa của (b) là: Những ký tự số 0-9

Nếu thêm dấu "@" sau chuỗi cần thay thế: "1ca6u0la5c0bo650v7b89@" thì kết quả sẽ khác nhau:
(a) --> MsgBox objRegEx.Replace("1ca6u0la5c0bo650v7b89@", "") --> "caulacbovb"
(b) --> MsgBox objRegEx.Replace("1ca6u0la5c0bo650v7b89@", "") --> "caulacbovb@"

C- Minh họa ứng dụng Sau đây là bài tập về hàm Execute

Mã: Chọn hết

  1. Private Sub Form_Load()
  2. Dim objRegEx As New RegExp
  3. objRegEx.Global = True
  4. objRegEx.Pattern = "[^A-Z]"
  5. Set colMatches = objRegEx.Execute("Câu Lac Bô VB")
  6.  
  7. If colMatches.Count > 0 Then
  8.     For Each strMatch In colMatches
  9.         a = a & strMatch.Value & ", "
  10.     Next
  11. MsgBox "Nhung Ký tu' không viêt HOA là: " & a
  12. End If
  13. End Sub
Sửa lần cuối bởi truongphu vào ngày T.Tư 02/09/2009 10:06 am với 1 lần sửa.


o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4753
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 13 time
Been thanked: 509 time

Re: Giới thiệu thư viện vbscript.dll

Gửi bàigửi bởi truongphu » T.Bảy 14/06/2008 1:50 pm

Ứng dụng để thay một câu hay một chuỗi trong file text

Mã: Chọn hết

  1. Private Sub Form_Load()
  2. Dim objRegEx As New RegExp
  3. objRegEx.Global = True
  4. objRegEx.Pattern = "Mùa thu lá bay"  '<-- Môt chuôi hay môt câu muôn thay
  5. RichTextBox1 = objRegEx.Replace(RichTextBox1.Text, "Mùa Ðông Cành Gãy") '<-- chuôi hay câu thay thê
  6. End Sub
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4753
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 13 time
Been thanked: 509 time

RegEx

Gửi bàigửi bởi truongphu » T.Tư 02/09/2009 10:05 am

A- Các Method của RegExp

Qua 2 bài viết trên, các bạn đã làm quen với 2 method Execute và Replace

* Method Execute: giá trị trả về là một mảng, ta phải duyệt mảng nầy để lấy các giá trị trùng
* Method Replace: sử dụng như hàm Replace của VB6

* Method Test: Function Test(sourceString As String) As Boolean
Sử dụng như method Execute, nhưng giá trị trả về kiểu Boolean: có trùng hay không

B- Các property của RegExp

* Khai báo RegEx.Global = True thì RegEx duyệt toàn bộ String, nếu False thì RegEx duyệt có trùng thì dừng
* Khai báo RegEx.IgnoreCase = True thì RegEx không phân biệt Hoa-thường, False thì ngược lại. Không khai báo (default) là False
* Khai báo RegEx.Pattern: Theo cú pháp riêng
RegEx.Pattern xứng đáng tách hẵn thành một bài. Đây là 'trái tim' của RegEx

-> các Property của các Class khác dễ sử dụng như count, value, FirstIndex

Sau đây là code minh họa:
Riêng FirstIndex là vị trí trùng đầu tiên trong chuỗi
Pattern = "t[a-z]+\sk[a-z]+" nghĩa là mẫu có 2 từ bắt đầu bằng ký tự t và k
Kết quả trả về: có 2 chuỗi khớp: "than kinh" ở vị trí bắt đầu là 11 và "thiet ke" ở vị trí bắt đầu là 40

Mã: Chọn hết

  1. Private Sub Form_Load()
  2. Set objRegEx = CreateObject("VBScript.RegExp")
  3.                 objRegEx.Pattern = "t[a-z]+\sk[a-z]+"
  4.                 objRegEx.Global = True
  5.                 objRegEx.IgnoreCase = True
  6. Dim Str$, Zz$
  7.     Str = "thanh cong than kinh thich hop tan cong thiet ke"
  8. Dim Matches
  9.     Set Matches = objRegEx.Execute(Str)
  10.               Zz = Matches.Count & vbCrLf
  11.             For i = 0 To Matches.Count - 1
  12.                 Zz = Zz & Matches(i).Value & " " & Matches(i).FirstIndex & vbCrLf
  13.             Next
  14. MsgBox Zz
  15. End Sub
Tập tin đính kèm
objRegEx.Execute.rar
(1.2 KiB) Đã tải 411 lần
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh


Quay về “[VB] Bài viết hướng dẫn”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.0 khách