RegExp對象的用法:
RegExpTest(patrn, strng)
Dim regEx, Match, Matches ' 建立變數。
Set regEx = New RegExp ' 建立Regex。
regEx.Pattern = patrn ' 設定模式。
regEx.IgnoreCase = True ' 設定是否區分字元大小寫。
regEx.Global = True ' 設定全域可用性。
Set Matches = regEx.Execute(strng) ' 執行搜尋。
For Each Match in Matches ' 遍曆匹配集合。
RetStr = RetStr & "Match found at position "
RetStr = RetStr & Match.FirstIndex & ". Match is '"
RetStr = RetStr & Match. & "'." & vbCRLF
Next
RegExpTest = RetStr
End
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
RegExp 對象的屬性
◎ Global屬性
Global屬性設定或返回一個 Boolean 值,該值指明在整個搜尋字串時模式是全部匹配還是只匹配第一個。
文法
object.Global [= True | False ]
object 參數總是 RegExp 對象。如果搜尋應用於整個字串,Global 屬性的值為 True,否則其值為 False。預設的設定為 True。
Global 屬性的用法(改變賦予 Global 屬性的值並觀察其效果):
RegExpTest(patrn, strng)
Dim regEx ' 建立變數。
Set regEx = New RegExp ' 建立規範運算式。
regEx.Pattern = patrn ' 設定模式。
regEx.IgnoreCase = True ' 設定是否區分字母的大小寫。
regEx.Global = True ' 設定全程性質。
RegExpTest = regEx.Execute(strng) ' 執行搜尋。
End
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
◎ IgnoreCase屬性
IgnoreCase屬性設定或返回一個Boolean值,指明模式搜尋是否區分大小寫。
文法
object.IgnoreCase [= True | False ]
object 參數總是一個 RegExp 對象。如果搜尋是區分大小寫,則 IgnoreCase 屬性為 False;否則為 True。預設值為 True。
IgnoreCase 屬性的用法(改變賦予 IgnoreCase 屬性的值以觀察其效果):
RegExpTest(patrn, strng)
Dim regEx ' 建立變數。
Set regEx = New RegExp ' 建立Regex。
regEx.Pattern = patrn ' 設定模式。
regEx.IgnoreCase = True ' 設定是否區分大小寫。
RegExpTest = regEx.Execute(strng) ' 執行搜尋。
End
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
◎ Pattern屬性
Pattern屬性設定或返回被搜尋的Regex模式。
文法
object.Pattern [= "searchstring"]
Pattern 屬性的文法包含以下幾個部分:
文法說明:
object 必需的。總是一個 RegExp 物件變數。
searchstring 可選的。被搜尋的正則字串運算式。它可能包含設定部分表格中的各種Regex字元。
設定
在書寫Regex的模式時使用了特殊的字元和序列。下面描述了可以使用的字元和序列,並給出了執行個體。
\ 將下一個字元標記為特殊字元或字面值。例如"n"與字元"n"匹配。"\n"與分行符號匹配。序列"\\"與"\"匹配對面,"\("與"("匹配。
^ 匹配輸入的開始位置。
$ 匹配輸入的結尾。
* 匹配前一個字元零次或幾次。例如,"zo*"可以匹配"z"、"zoo"。
+ 匹配前一個字元一次或多次。例如,"zo+"可以匹配"zoo",但不匹配"z"。
? 匹配前一個字元零次或一次。例如,"a?ve?"可以匹配"never"中的"ve"。
. 匹配分行符號以外的任何字元。
(pattern) 與模式比對並記住匹配。匹配的子字串可以從作為結果的 Matches 集合中使用 Item [0]...[n]取得。如果要匹配括弧字元(和 ),可使用"\(" 或 "\)"。
x|y 匹配 x 或 y。例如 "z|food" 可匹配 "z" 或 "food"。"(z|f)ood" 匹配 "zoo" 或 "food"。
{n} n 為非負的整數。匹配恰好n次。例如,"o{2}" 不能與 "Bob 中的 "o" 匹配,但是可以與"foooood"中的前兩個o匹配。
{n,} n 為非負的整數。匹配至少n次。例如,"o{2,}"不匹配"Bob"中的"o",但是匹配"foooood"中所有的o。"o{1,}"等價於"o+"。"o{0,}"等價於"o*"。
{n,m} m 和 n 為非負的整數。匹配至少 n 次,至多 m 次。例如,"o{1,3}" 匹配 "fooooood"中前三個o。"o{0,1}"等價於"o?"。
[xyz] 一個字元集。與括弧中字元的其中之一匹配。例如,"[abc]" 匹配"plain"中的"a"。
[^xyz] 一個否定的字元集。匹配不在此括弧中的任何字元。例如,"[^abc]" 可以匹配"plain"中的"p".
[a-z] 表示某個範圍內的字元。與指定區間內的任何字元匹配。例如,"[a-z]"匹配"a"與"z"之間的任何一個小寫字母字元。
[^m-z] 否定的字元區間。與不在指定區間內的字元匹配。例如,"[m-z]"與不在"m"到"z"之間的任何字元匹配。
\b 與單詞的邊界匹配,即單詞與空格之間的位置。例如,"er\b" 與"never"中的"er"匹配,但是不匹配"verb"中的"er"。
\B 與非單詞邊界匹配。"ea*r\B"與"never early"中的"ear"匹配。
\d 與一個數字字元匹配。等價於[0-9]。
\D 與非數位字元匹配。等價於[^0-9]。
\f 與分頁符匹配。
\n 與分行符號字元匹配。
\r 與斷行符號字元匹配。
\s 與任何白字元匹配,包括空格、定位字元、分頁符等。等價於"[ \f\n\r\t\v]"。
\S 與任何非空白的字元匹配。等價於"[^ \f\n\r\t\v]"。
\t 與定位字元匹配。
\v 與垂直定位字元匹配。
\w 與任何單詞字元匹配,包括底線。等價於"[A-Za-z0-9_]"。
\W 與任何非單詞字元匹配。等價於"[^A-Za-z0-9_]"。
\num 匹配 num個,其中 num 為一個正整數。引用回到記住的匹配。例如,"(.)\1"匹配兩個連續的相同的字元。
\n 匹配 n,其中n 是一個八進位換碼值。八進位換碼值必須是 1, 2 或 3 個數字長。例如,"\11" 和 "\011" 都與一個定位字元匹配。"\0011"等價於"\001" 與 "1"。八進位換碼值不得超過 256。否則,只有前兩個字元被視為運算式的一部分。允許在Regex中使用ASCII碼。
\xn 匹配n,其中n是一個十六進位的換碼值。十六進位換碼值必須恰好為兩個數字長。例如,"\x41"匹配"A"。"\x041"等價於"\x04" 和 "1"。允許在Regex中使用 ASCII 碼。
Pattern 屬性的用法:
RegExpTest(patrn, strng)
Dim regEx ' 建立變數。
Set regEx = New RegExp ' 建立Regex。
regEx.Pattern = patrn ' 設定模式。
regEx.IgnoreCase = True ' 設定是否區分大小寫。
RegExpTest = regEx.Execute(strng) ' 執行搜尋。
End
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
RegExp對象的方法
◎ Execute方法
Execute方法對指定的字串執行Regex搜尋。
文法
object.Execute(string)
文法部分描述
object 必需的。總是一個 RegExp 對象的名稱。
string 必需的。要在其上執行Regex的文本字串。
說明
Regex搜尋的設計模式是通過 RegExp 對象的 Pattern 來設定的。
Execute 方法返回一個 Matches 集合,其中包含了在 string 中找到的每一個匹配的 Match 對象。如果未找到匹配,Execute 將返回空的 Matches 集合。
Execute 方法的用法:
RegExpTest(patrn, strng)
Dim regEx ' 建立變數。
Set regEx = New RegExp ' 建立Regex。
regEx.Pattern = patrn ' 設定模式。
regEx.IgnoreCase = False ' 設定區分大小寫。
regEx.Global = True ' 搜尋全部匹配。
RegExpTest = regEx.Execute(strng) ' 執行搜尋。
End
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
◎ Replace方法
Replace方法替換在Regex尋找中找到的文本。
文法
object.Replace(string1, string2)
文法部分描述
object 必需的。總是一個 RegExp 對象的名稱。
string1 必需的。string1 是將要進行文本替換的字串。
string2 必需的。 string2 是替換文本字串。
說明
被替換的文本的實際模式是通過 RegExp 對象的 Pattern 屬性設定的。
Replace 方法返回 string1 的副本,其中的 RegExp.Pattern 文本已經被替換為 string2。如果沒有找到匹配的文本,將返回原來的 string1 的副本。
eplace 方法的用法:
ReplaceTest(patrn, replStr)
Dim regEx, str1 ' 建立變數。
str1 = "The quick brown fox jumped over the lazy dog."
Set regEx = New RegExp ' 建立Regex。
regEx.Pattern = patrn ' 設定模式。
regEx.IgnoreCase = True ' 設定是否區分大小寫。
ReplaceTest = regEx.Replace(str1, replStr) ' 作替換。
End
MsgBox(ReplaceTest("fox", "cat"))
' 將 'fox' 替換為 'cat'。
;另外,Replace 方法在模式中替換 subexpressions 。 下面對以前樣本中函數的調用,替換了原字串中的所有字對:
MsgBox(ReplaceText("(\S+)(\s+)(\S+)", "$3$2$1")) ' Swap pairs of words.
◎ Test方法
Test方法對指定的字串執行一個Regex搜尋,並返回一個 Boolean 值指示是否找到匹配的模式。
文法
object.Test(string)
文法部分描述
object 必需的。總是一個 RegExp 對象的名稱。
string 必需的。要執行Regex搜尋的文本字串。
說明
Regex搜尋的實際模式是通過RegExp對象的Pattern屬性來設定的。RegExp.Global屬性對Test方法沒有影響。
如果找到了匹配的模式,Test方法返回True;否則返回False。
Test 方法的用法:
RegExpTest(patrn, strng)
Dim regEx, retVal ' 建立變數。
Set regEx = New RegExp ' 建立Regex。
regEx.Pattern = patrn ' 設定模式。
regEx.IgnoreCase = False ' 設定是否區分大小寫。
retVal = regEx.Test(strng) ' 執行搜尋測試。
If retVal Then
RegExpTest = "找到一個或多個匹配。"
Else
RegExpTest = "未找到匹配。"
End If
End
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
00000