vba 正則表達式應用


在VBA中使用正則表達式,可以通過下列途徑實現:
創建正則表達式對象:
前期綁定:在VBA代碼編輯器中的"Tools"菜單中,選中"References...",然后引用Microsoft VBScript Regular Expressions 5.5類庫,然后直接定義對象:Dim reg As New RegExp。
后期綁定:使用CreateObject方法定義對象:CreateObject("VBSCRIPT.REGEXP")。
前一種方式的優點是可以有編輯器的Intellisense支持。

RegExp對象的屬性:
Global
 - 設置或返回一個 Boolean 值,該值指明在整個搜索字符串時模式是全部匹配還是只匹配第一個。如果搜索應用於整個字符串,Global 屬性的值應該為 True,否則其值為 False。默認的設置為True。
Multiline - 返回正則表達式是否具有標志m, 缺省值為False。如果指定的搜索字符串分布在多行,這個屬性是要設置為True的。
IgnoreCase - 設置或返回一個Boolean值,指明模式搜索是否區分大小寫。如果搜索是區分大小寫的,則 IgnoreCase 屬性應該為False;否則應該設為True。缺省值為True。
Pattern - 設置或返回被搜索的正則表達式模式。 被搜索的正則字符串表達式。它包含各種正則表達式字符。

RegExp對象的方法:
Execute
 - 對指定的字符串執行正則表達式搜索。需要傳入要在其上執行正則表達式的文本字符串。正則表達式搜索的設計模式是通過 RegExp對象的Pattern來設置的。Execute方法返回一個Matches集合,其中包含了在string中找到的每一個匹配的Match對象。如果未找到匹配,Execute將返回空的Matches集合。
Replace - 替換在正則表達式查找中找到的文本。
Test - 對指定的字符串執行一個正則表達式搜索,並返回一個 Boolean 值指示是否找到匹配的模式。RegExp.Global屬性對Test方法沒有影響。如果找到了匹配的模式,Test方法返回True;否則返回False。

MatchCollection對象與Match對象
匹配到的所有對象放在MatchCollection集合中,這個集合對象只有兩個只讀屬性:
Count:匹配到的對象的數目
Item:集合的又一通用方法,需要傳入Index值獲取指定的元素。

一般,可以使用For Each語句枚舉集合中的對象。集合中對象的類型是Match。
Match對象有以下幾個只讀的屬性:
FirstIndex - 匹配字符串在整個字符串中的位置,值從0開始。
Length - 匹配字符串的長度。
Value - 匹配的字符串。
SubMatches - 集合,匹配字符串中每個分組的值。作為集合類型,有Count和Item兩個屬性。

 

正則表達式很強大,是處理文本的首選,不管你信不信,反正我是信了。說了很多,最后以一個小例子結尾吧:

復制代碼
Sub  Test()
    
Dim  reg  As   New  RegExp
    
With  reg
        .Global 
=   True
        .IgnoreCase 
=   True
        .Pattern 
=   " \d+ "
    
End   With
    
   
Dim  mc  As  MatchCollection
   
Dim  m  As  Match
   
Set  mc  =  reg.Execute( " 123aaaaa987uiiui999 " )
   
For   Each  m In mc
    
MsgBox  m.Value
   
Next
End Sub
復制代碼


免責聲明!

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



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