正則表達式匹配模式VB


正則表達式匹配模式  

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

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

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

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

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

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

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

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

  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       ' 正則表達式
     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  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM