1.正則表達式(Regular Expression)基礎
正則表達式是通用的文本搜索和處理方案,它的知識不是VBA獨有的,基本上每種語言都內置了正則表達式的功能。正則表達式的基礎知識不是這裏的重點,須要的朋友能夠Google一下,或者參看下面的一些入門教程:
http://deerchao.net/tutorials/regex/regex.htm
http://www.regexlab.com/zh/regref.htm
http://www.williamlong.info/archives/433.html html
2.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兩個屬性。 工具