收藏本页
切换浏览模式

微波家园论坛微波程序设计FORTRAN,VB程序设计 → [转帖]vb 正则表达式(3)——限定符

关闭 帖子评论
选取类型: 中立 支持 反对
观点标题:
验证码: 验证码,看不清楚?请点击刷新验证码
观点内容:
(不支持HTML)
  1. 请以客观、真实地作出评论,并注意语言文明;
  2. 观点发表后不能作出更改;
您是本帖的第 642 个阅读者
树形 打印
标题: [转帖]vb 正则表达式(3)——限定符
wsn
帅哥哟,离线,有人找我吗?
头衔:微波班竹
等级:管理员
威望:30 点
文章:1389 篇
积分:4201 点
金钱:4369 元
金币:26 枚
魅力:4330 点
注册:2006年7月15日
近访:2009-1-3 18:51:00
发贴心情
[转帖]vb 正则表达式(3)——限定符
vb 正则表达式(2)——限定符
简单表达式 最简单的正则表达式大家都已熟悉,即文字字符串。特定的字符串可通过文字本身加以描述;像 foo 这样的正则表达式模式可精确匹配输入的字符串 foo。在本例中,也将匹配如下输入:The food was quite tasty,如果希望精确匹配,这可能不是预期结果。
模式输入(匹配) 解释
foofoo、food、foot、“There's evil afoot.”字符串里喊有foo

限定符 限定符提供了一种简单方法,用于指定在模式中允许特定字符或字符集自身重复出现的次数。有 3 个非显式限定符:

1.*,描述“出现 0 或多次”。
2.+,描述“出现 1 或多次”。
3.?,描述“出现 0 或 1 次”。

限定符始终引用限定符前(左边)的模式,通常是单个字符,除非使用括号创建模式组。下面是一些模式示例及匹配的输入。

模式输入(匹配)解释
fo*foo、foe、food、fooot、“forget it”、funny、 puffyo出现0次或多次,所以foo,foe,puffy都符合
fo+foo、foe、food、foot、“forget it”o出现1次或多次,所以foo,foe都符合,而puffy不符合
fo?foo、foe、food、foot、“forget it”、funny、puffyo出现0次或1次,所以foo,foe,puffy都符合

除了指定给定模式准确出现 0 或 1 次之外,? 字符还可强制模式或子模式匹配数目最少的字符(如果匹配输入字符串中的多个字符)。

除了非显式限定符(一般叫做限定符,但为区别于下一组,故称非显式限定符)之外,还有显式限定符。在模式出现次数方面,限定符的概念非常模糊。使用显式限定符则可准确指定数字、范围或数字集。显式限定符位于所应用的模式的后边,这一点与正则限定符一样。显式限定符使用花括号 {} 及其中的数字值表示模式出现次数的上下限。例如,x{5} 将准确匹配 5 个 x 字符 (xxxxx)。如果仅指定一个数字,则表示次数上限;如果数字后跟一个逗号,如 x{5,},表示匹配任何出现次数大于 4 的 x 字符。下面是一些模式示例及匹配的输入。

模式输入(匹配)解释
ab{2}cbbc、aaabbccc出现了两次b
ab{,2}cac、abc、abbc、aabbcc出现了两次以下b
ab{2,3}cabbc、abbbc、aabbcc、aabbbcc出现了2次或者是3次b

下面用vb代码来实验以下上上面的代码,(结果在立即窗口输出)

Private Sub Command1_Click()
Dim re As New RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "fo*" '这个就是正则表达式
Debug.Print re.Replace("abcfoottt", "{替换成的字符}") '把foo替换
re.Pattern = "fo?"
Debug.Print re.Replace("abcfoottt", "{替换成的字符}") '替换fo
re.Pattern = "fo+"
Debug.Print re.Replace("abcfoottt", "{替换成的字符}") '替换foo
re.Pattern = "t{2}"
Debug.Print re.Replace("abcfoottt", "{替换成的字符}") '替换tt
End Sub



爱你 却说不出口
想你 却是独自心痛
念你 却只能寄语风中
梦你 却寻不回你的影子
等你 却不敢面对你的眼眸
ip地址已设置保密
2008-6-3 14:28:00
回到顶部

WWW.MWHRF.COM
Powered by 微波家园论坛
备案序号: ICP备06045115号