-------------------正则表达式的所有内容-----------------------------
RegExp属性
Global
IgnoreCase
Pattern
RegExp方法
Execute --对指定的字符串执行正则表达式搜索。
Replace --替换正则表达式搜索到的字符。
Test
RegExp对象
Match
Match属性
FirstIndex
Length
Value
RegExp集合
Matches
SubMatches
说明:
正则表达式搜索的设计模式是通过 RegExp 对象的 Pattern 来设置的。
Execute 方法返回一个 Matches 集合,其中包含了在 string 中找到的每一个匹配的 Match 对象。如果未找到匹配,Execute 将返回空的 Matches 集合。
举例:
Function RegExpTest(patrn, strng)
Dim regEx, Match, Matches ‘建立变量
Set regEx = New RegExp ‘建立正则表达式
regEx.Pattern = patrn ‘设置搜索方法
regEx.IgnoreCase = True ‘设置是否区分大小写
regEx.Global = True ‘设置全程可用性
Set Matches = regEx.Execute(strng) ‘根据正则表达式规则执行搜索字符串
For Each Match in Matches ‘遍历Matches集合
RetStr = RetStr & Match.Value & "," ‘显示符合正则表达式规则的字符,此句也可写为: RetStr = RetStr & Match
Next
RegExpTest = RetStr
End Function
str = RegExpTest("\d+", "xxafaf12dfasf3433432xx你好")
msgbox str
显示:12,3433432
View Code
Function RegExpTest(patrn, strng)
Dim regEx, Match, Matches
Set regEx = New RegExp
regEx.Pattern = patrn
regEx.IgnoreCase = True
regEx.Global = True
Set Matches = regEx.Execute(strng)
For Each Match in Matches
RetStr = RetStr & Match.value
Next
RegExpTest = RetStr
End Function
msgbox RegExpTest("\d+","sdfsdfsd234")
在这个示例中我们可以看到方法Execute和对象Match是使用在集合Matches中的,Match和Matches是作为变量来使用的,为了我们很容易得看懂它,我们没有必要将他们换名字。关于对象Match的属性,我在上面的示例中都做了注释了。
RegExp的Replace方法介绍:
Replace--替换在正则表达式搜索到的文本。
object.Replace(string1, string2)
参数:
object
Required. Always the name of a RegExp object.
string1
Required. String1 is the text string in which the text replacement is to occur.
string2
Required. String2 is the replacement text string.
说明:
被替换的文本的实际模式是通过 RegExp 对象的 Pattern 属性设置的。
Replace 方法返回 string1 的副本,其中的 RegExp.Pattern 文本已经被替换为 string2。如果没有找到匹配的文本,将返回原来的 string1 的副本。
下面的例子说明了Replace方法的用法。
Function ReplaceTest(patrn,replStr)
Dim regEx,str1
str1 = “the quick browm fox jumps over the lazy dog.”
‘create regular expression
Set regEx = New RegExp
regEx.Pattern = patrn
regEx.IgnoreCase = True
‘make replacement.
ReplaceTest = regEx.Replace(str1,replStr)
End Function
Msgbox (ReplaceTest(“fox”,”cat”)) ‘replace ‘fox’ with ‘cat’.
RegExp的Test方法介绍:
Test 方法
对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。
object.Test(string)
参数
object
必选项。总是一个 RegExp 对象的名称。
string
必选项。要执行正则表达式搜索的文本字符串。
说明
正则表达式搜索的实际模式是通过RegExp对象的Pattern属性来设置的。RegExp.Global属性对Test方法没有影响。
如果找到了匹配的模式,Test方法返回True;否则返回False。
下面的代码说明了Test 方法的用法。
Function RegExpTest(patrn, strng)
Dim regEx, retVal ' 建立变量。
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = False ' 设置是否区分大小写。
retVal = regEx.Test(strng) ' 执行搜索测试。
If retVal Then
RegExpTest = "找到一个或多个匹配。"
Else
RegExpTest = "未找到匹配。"
End If
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
SubMatches 集合
正则表达式子匹配字符串的集合。
说明
SubMatches 集合包含了单个的子匹配字符串,只能用 RegExp 对象的 Execute 方法创建。SubMatches 集合的属性是只读的。
运行一个正则表达式时,当圆括号中捕捉到子表达式时可以有零个或多个子匹配。SubMatches 集合中的每一项是由正则表达式找到并捕获的的字符串。
下面的代码演示了如何从一个正则表达式获得一个 SubMatches 集合以及如何它的专有成员:
Function SubMatchTest(inpStr)
Dim oRe, oMatch, oMatches
Set oRe = New RegExp
'查找一个电子邮件地址(不是一个理想的 RegExp)
oRe.Pattern = "(\w+)@(\w+)\.(\w+)"
‘得到 Matches 集合
Set oMatches = oRe.Execute(inpStr)
‘得到 Matches 集合中的第一项
Set oMatch = oMatches(0)
‘ 创建结果字符串。
Match 对象是完整匹配 — dragon@xyzzy.com
retStr = "电子邮件地址是: " & oMatch & vbNewline
‘ 得到地址的子匹配部分。
retStr = retStr & "电子邮件别名是: " & oMatch.SubMatches(0) ' dragon
retStr = retStr & vbNewline
retStr = retStr & "组织是: " & oMatch. SubMatches(1)' xyzzy
SubMatchTest = retStr
End Function
MsgBox(SubMatchTest("请写信到 dragon@xyzzy.com 。 谢谢!"))