没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
正则表达式(RegExp)对象
提供简单的正则表达式支持功能。
说明
下面的代码说明了 RegExp 对象的用法:
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 & "'." & vbCRLF
Next
RegExpTest = RetStr
End Function
MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))
使用正则表达式
在典型的搜索和替换操作中,必须提供要查找的确切文字。这种技术对于静态
文本中的简单搜索和替换任务可能足够了,但是由于它缺乏灵活性,因此在搜
索动态文本时就有困难了,甚至是不可能的。
使用正则表达式,就可以:
测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在
该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数
据有效性验证。
替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可
以全部将其删除,或者替换为别的文字。
根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字
段中查找特定文字。
例如,如果需要搜索整个 站点来删除某些过时的材料并替换某些
格式化标记,则可以使用正则表达式对每个文件进行测试,看在该文件中是否
存在所要查找的材料或 格式化标记。用这个方法,就可以将受影响的文
件范围缩小到包含要删除或更改的材料的那些文件。然后可以使用正则表达式
来删除过时的材料,最后,可以再次使用正则表达式来查找并替换那些需要替
换的标记。
另一个说明正则表达式非常有用的示例是一种其字符串处理能力还不为人所知
的语言。是 的一个子集,具有丰富的字符串处理功能。
与 类似的 则没有这一能力。正则表达式给
的字符串处理能力带来了明显改善。不过,
可能还是在 中使用正则表达式的效率更高,它允许在单个表达式中
执行多个字符串操作。
正则表达式语法
一个正则表达式就是由普通字符(例如字符 到 )以及特殊字符(称为
元字
符
)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符
串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
这里有一些可能会遇到的正则表达式示例:
Visual Basic
Scripting Edition
VBScript
匹配
!" # !"#
匹配一个空白行。
$%&'$(& #$%&'$(&#
验证一个 )*号码是否由一个 % 位数
字,一个连字符以及一个 ( 位数字组
成。
+,-!./-!+0/ #+,-!./-!+0/#
匹配一个 标记。
下表是元字符及其在正则表达式上下文中的行为的一个完整列表:
字符 描述
将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后向引用、或一
个八进制转义符。例如,11匹配字符 ##。11匹配一个换行符。序列 11匹
配 ##而 #,#则匹配 #,#。
匹配输入字符串的开始位置。如果设置了 RegExp对象的 Multiline属性,
也匹配 11或 11之后的位置。
"
匹配输入字符串的结束位置。如果设置了 RegExp对象的 Multiline属性,"
也匹配 11或 11之前的位置。
!
匹配前面的子表达式零次或多次。例如,!能匹配 ##以及 ##。 !等价
于$23&。
4
匹配前面的子表达式一次或多次。例如,141能匹配 ##以及 ##,但不
能匹配 ##。4等价于 $03&。
5
匹配前面的子表达式零次或一次。例如,#,.5#可以匹配 ##或 ##
中的##。5等价于 $230&。
$n&
n是一个非负整数。匹配确定的 n次。例如,1$%&1不能匹配 ##中的
11,但是能匹配 #6#中的两个 。
$n3&
n是一个非负整数。至少匹配 n次。例如,1$%3&1不能匹配 ##中的 11,
但能匹配 #6#中的所有 。1$03&1等价于 141。1$23&1则等价于
1!1。
$n3m&
m和 n均为非负整数,其中 n+7m。最少匹配 n次且最多匹配 m次。刘,
#$038&#将匹配 #6#中的前三个 。1$230&1等价于 151。请注意
在逗号和两个数之间不能有空格。
5
当该字符紧跟在任何一个其他限制符 ,!34353$n&3$n3&3$n3m&.后面时,匹
配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪
婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 ##,1451
将匹配单个 ##,而 141将匹配所有 11。
-
匹配除 ##之外的任何单个字符。要匹配包括 11在内的任何字符,请使用象
1- 1的模式。
,pattern.
匹配 pattern并获取这一匹配。所获取的匹配可以从产生的 9集合得
到,在 中使用 SubMatches集合,在
中则使用 $0:$9属性。要匹配圆括号字符,请使用 1,1或 1.1。
,5;pattern.
匹配 pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储
供以后使用。这在使用 #或#字符 ,<.来组合一个模式的各个部分是很有用。例
如, 1,5;=<.就是一个比 1=<1更简略的表达式。
,57pattern.
正向预查,在任何匹配 pattern的字符串开始处匹配查找字符串。这是一个非
获取匹配,也就是说,该匹配不需要获取供以后使用。例如, 1>,5
7?(<?@<A<%222.1能匹配 #>%222#中的 #>#,但不能匹
配 #>8-0#中的 #>#。预查不消耗字符,也就是说,在一个匹
配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预
查的字符之后开始。
,5Bpattern.
负向预查,在任何不匹配 ACD9E999
=9E9pattern的字符串开始处匹配查
找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。
例如1>,5B?(<?@<A<%222.1能匹配 #>8-0#中的
#>#,但不能匹配 #>%222#中的 #>#。预查不消耗
字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹
配的搜索,而不是从包含预查的字符之后开始
x<y
匹配 x或 y。例如,1<61能匹配 ##或 #6#。1,<6.1则匹配 ##
或 #6#。
xyz
字符集合。匹配所包含的任意一个字符。例如, 1 1可以匹配 ##中的
11。
xyz
负值字符集合。匹配未包含的任意字符。例如, 1 1可以匹配 ##中
的11。
a-z
字符范围。匹配指定范围内的任意字符。例如,1' 1可以匹配 11到 11范围
内的任意小写字母字符。
a-z
负值字符范围。匹配任何不在指定范围内的任意字符。例如,1' 1可以匹配
任何不在 11到 11范围内的任意字符。
剩余21页未读,继续阅读
资源评论
zhangzhiwei911
- 粉丝: 3
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功