正则匹配快代理vbs教程-使用正则表达式
2010年05月18日星期二 08:33
一、RegExp对象
二、属性
1、Global 属性
描述:设置或返回一个布尔值,该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。
语法:object.Global [= True | False ]
参数:object 参数总是 RegExp 对象。
说明:如果搜索应用于整个字符串,Global 属性的值为 True,否则其值为 False。默认的设置为False。
2、IgnoreCase 属性
描述:设置或返回一个Boolean值,指明模式搜索是否区分大小写。
语法:object.IgnoreCase [= True | False ]
参数:object 参数总是一个 RegExp 对象。
说明:如果搜索是区分大小写的,则 IgnoreCase 属性为 False;否则为 True。缺省值为 False。
3、Pattern 属性
描述:设置或返回被搜索的正则表达式模式。这是一个最重要的属性,我们主要是设置这个属性来实现数据校验的。
语法:object.Pattern [= "searchstring"]
参数:Pattern 属性的语法包含以下几个部分:
object:必需的。总是一个 RegExp 对象变量。
searchstring:可选的。被搜索的正则字符串表达式。
设置:在书写正则表达式的模式时使用了特殊的字符和序列。下表描述了可以使用的字符和序列,并给出了实例。
例子:
set re=new regexp
re.pattern="[a-z]"
re.ignorecase=False
re.global=False
st("f")
将会返回true
regExp对象的三个方法正好解决了这个问题,它们是Replace方法、Test方法和Execute方法。
三、方法
1、Replace 方法
描述:Replace方法替换在正则表达式查中到的文本。
语法:object.Replace(string1, string2)
参数: object 必需的。总是一个 RegExp 对象的名称。
string1 必需的。string1 是将要进行文本替换的字符串。
string2 必需的。 string2 是替换文本字符串。
说明:被替换的文本的实际模式是通过 RegExp 对象的 Pattern 属性设置的。
返回:Replace 方法返回 string1 的副本,其中的 RegExp.Pattern 文本已经被替换为 string2。如果没有到匹配的文本,将返回原来的 string1 的副本。
例子:
Function ReplaceTest(patrn, replStr)
Dim regEx, str1 ' 建立变量。
str1 = "The quick brown fox jumped over the lazy dog."
Set regEx = New RegExp ' 建立正则表达式。
regEx.Pattern = patrn ' 设置模式。
regEx.IgnoreCase = True ' 设置是否区分大小写。
ReplaceTest = regEx.Replace(str1, replStr) ' 作替换。
End Function
msgbox ReplaceTest("fox", "cat") ' 将 'fox' 替换为 'cat'。
msgbox ReplaceTest("(S+)(s+)(S+)", "$3$2$1") ' 交换词对.
2、Test 方法
描述:对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否到匹配的模式。
语法:object.Test(string)
属性:object:必需的。总是一个 RegExp 对象的名称。
string:必需的。要执行正则表达式搜索的文本字符串。
说明:正则表达式搜索的实际模式是通过RegExp对象的Pattern属性来设置的。RegExp.Global属性对Test方法没有影响。如果到了匹配的模式,Test方法返回True;否则返回False。
例子:
set re=new regexp
re.pattern="[a-z]"
re.ignorecase=False
re.global=False
st("f")
3、Execute 方法
描述:对指定的字符串执行正则表达式搜索。
语法:object.Execute(string)
参数:object:必需的。总是一个 RegExp 对象的名称。
string:必需的。要在其上执行正则表达式的文本字符串。
说明:正则表达式搜索的设计模式是通过 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'遍历匹配集合。
RetStr = RetStr & "Match found at position "
RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
RetStr = RetStr & Match.Value & "'." & "<BR>"
Next
RegExpTest = RetStr
End Function
Msgbox RegExpTest("[ij]s.", "IS1 Js2 IS3 is4")
在这个例子中,我们查字符串中有无is或者js这两个词,忽略大小写。运行的结果如下:
Match found at position 0. Match Value is 'IS1'.
Match found at position 4. Match Value is 'Js2'.
Match found at position 8. Match Value is 'IS3'.
Match found at position 12. Match Value is 'is4'.
四、Match对象
匹配搜索的结果是存放在Match对象中,他提供了对正则表达式匹配的只读属性的访问。
Match 对象只能通过 RegExp 对象的 Execute 方法来创建,该方法实际上返回了 Match 对象的集合。所有的 Match 对象属性都是只读的。在执行正则表达式时,可能产生零个或多个 Match 对象。每个 Match 对象提供了被正则表达式搜索到的字符串的访问、字符串的长度,以及到匹配的索引位置等。
1、FirstIndex属性
返回在搜索字符串中匹配的位置。FirstIndex 属性使用从零起算的偏移量,该偏移量是相对于搜索
字符串的起始位置而言的。换言之,字符串中的第一个字符被标识为字符 0 。
2、Length 属性
返回在字符串搜索中到的匹配的长度。
3、Value 属性
返回在一个搜索字符串中到的匹配的值或文本。
例子:
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&"匹配"&"is."&"位于"&Match.FirstIndex&"匹配值是"&Match.Value&"长度是"&match.length&vbCRLF
Next
RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
五、Matches 集合
正则表达式 Match 对象的集合。
Matches 集合中包含若干独立的 Match 对象,只能使用 RegExp 对象的 Execute 方法来创建之。与独立的 Match 对象属性相同,Matches `集合的一个属性是只读的。在执行正则表达式时,可能产生零个或多个 Match 对象。每个 Match 对象都提供了与正则表达式匹配的字符串的访问入口、字符串的长度,以及标识匹配位置的索引。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。