VB6.0如何使用Regex

來源:互聯網
上載者:User
VB6.0如何使用Regex

最近在用VB6解決一個網頁解析的應用,涉及到了正則。如何在VB6中使用Regex,這個在MS網站上有介紹,不過介紹的不是很全面。下面結合MS網站的內容和搜尋到的東西,自己匯總一下。

  引用了Microsoft VBScript Regular Expressions 5.5 後就可以聲明正則相關對象了。主要有三個對象:RegExp、MatchCollection、Match。
  
  1. RegExp 
這是VB使用Regex匹配模式的主要對象了。其提供的屬性用於設定那些用來比較的傳遞給 RegExp 執行個體的字串的模式。 其提供的方法以確定字串是否與Regex的特定模式相匹配。

  屬性:
  Pattern
:一個字串,用來定義Regex。
  IgnoreCase
:一個布爾值屬性,指示是否必須對一個字串中的所有可能的匹配進行Regex測試。這是MS的解釋,有點費解,實際使用中的執行個體是,如果True,則忽略英文字母大小的匹配,False對大小寫進行匹配。
  Global
:設定一個布爾值或返回一個布爾值,該布爾值指示一個模式是必須匹配整個搜尋字串中的所有搜尋項還是只匹配第一個搜尋項。
  MultiLine
:這個MS沒有介紹。查了一下資料,設定一個布爾值或返回一個布爾值,是否在串的多行中搜尋。如果允許匹配多行文本,則multiline為true,如果搜尋必須在換行時停止,則為false 。

  方法:
  Execute
:返回一個 MatchCollection 對象,該對象包含每個成功匹配的 Match 對象。
  Replace
:MS沒有介紹,這是返回一個將匹配字元替換為指定字元的字串。
  Test
:返回一個布爾值,該值指示Regex是否與字串成功匹配。

  2. MatchCollection 
是集合對象,包含有關匹配字串的資訊,該對象包含每個成功匹配的 Match 對象。

  屬性
  Count
:匹配對象的總數。
  Item
:匹配對象的索引。

  3. Match 
是成功匹配的對象。

  屬性:
  FirstIndex
:匹配對象所匹配字串的起始位置。
  Length
:匹配對象所匹配字串的字元長度。
  SubMatches
:匹配對象所匹配結果的子項。
  Value
:匹配對象所匹配的值。

  相關樣本參照MS的網站:http://support.microsoft.com/kb/818802/zh-cn
。MS上沒有介紹的幾個屬性和方法的使用,見下面的幾個簡單樣本:1. RegExp的Test方法:

1. RegExp的Test方法:

Function
bTest(ByVal s
As

String
, ByVal p
As

String
)
As

Boolean


    
Dim
re
As
RegExp

    
Set
re
=

New
RegExp

     re.IgnoreCase
=

False
 
'
設定是否匹配大小寫


     re.Pattern
=
p

     bTest
=
re.Test(s)

End Function



Private

Sub
Command1_Click()


    
Dim
s
As

String


    
Dim
p
As

String


        

     s
=

"
我的郵箱: test@163.com 。歡迎致電!
"



    
'
測試字串中是否包含數字:


     p
=

"\
d+
"


    
MsgBox
bTest(s, p)


    
'
測試字串中是否全是由數字組成:


     p
=

"
^\d+$
"


    
MsgBox
bTest(s, p)


    
'
測試字串中是否有大寫字母:


     p
=

"
[A-Z]+
"


    
MsgBox
bTest(s, p)

    

End Sub

2. RegExp的Replace方法:

Function
StrReplace(s
As

String
, p
As

String
, r
As

String
)
As

String


    

    
Dim
re
As
RegExp

    
Set
re
=

New
RegExp

     re.IgnoreCase
=

True


     re.Global
=

True


     re.Pattern
=
p

     StrReplace
=
re.Replace(s, r)

    

End Function



Private

Sub
Command2_Click()


    
Dim
s
As

String
     
'
字串


    
Dim
p
As

String
     
'
Regex


    
Dim
r
As

String
     
'
要替換的字串




  
'
以下代碼是替換郵箱地址


     

     s
=

"
我的E-mail: Test@163.com 。歡迎致電!
"


     p
=

"
w+@w+.w+
"


     r
=

"
E_Mail@sohu.net
"


     s
=
StrReplace(s, p, r)

     Debug.Print s

    
'
結果:我的E-mail: E_Mail@sohu.net 。歡迎致電!




End Sub

3. Match的SubMatches屬性:


Private

Sub
Command3_Click()


    
Dim
re
As
RegExp

    
Dim
mh
As
Match

    
Dim
mhs
As
MatchCollection

    
Dim
inpStr
As

String


    

     inpStr
=

"
我的E-mail: lucky@163.com 。歡迎致電!
"


    
Set
re
=

New
RegExp

     re.Pattern
=

"
(w+)@(w+).(w+)
"
         
'
同樣是匹配地址,注意和上例的不同


    
Set
mhs
=
re.Execute(inpStr)

    
Set
mh
=
mhs(
0
)                                      
'
只有一個匹配


    

     Debug.Print
"
電子郵件地址是:
"

&
mh.Value                
'
這裡是匹配的內容


     Debug.Print
"
使用者名稱是:             
"

&
mh.SubMatches(
0
)  
'
第一個括弧中的內容


     Debug.Print
"
郵箱是:                 
"

&
mh.SubMatches(
1
)  
'
第二個括弧中的內容


     Debug.Print
"
網域名稱是:           
"

&
mh.SubMatches(
2
)  
'
第三個括弧中的內容


    

End Sub


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.