您的位置:首页技术开发ASP教程 → 正则表达式简介(11)

正则表达式简介(11)

时间:2004/11/7 4:13:00来源:本站整理作者:蓝点我要评论(0)

11.限定符



有时候不知道要匹配多少字符。为了能适应这种不确定性,正则表达式支持限定符的概念。这些限定符可以指定正则表达

式的一个给定组件必须要出现多少次才能满足匹配。



下表给出了各种限定符及其含义的说明:



字符                                       描述



*     匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。

       * 等价于{0,}。



+      匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以

        及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。



?      匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do"

        或 "does" 中的"do" 。? 等价于 {0,1}。



{n}    n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob"

        中的 'o',但是能匹配 "food" 中的两个 o。



{n,}   n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中

        的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o

        {0,}' 则等价于 'o*'。



{n,m}  m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

        刘, "o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价

        于 'o?'。请注意在逗号和两个数之间不能有空格。





对一个很大的输入文档而言,章节数很轻易就超过九章,因此需要有一种方法来处理两位数或者三位数的章节号。限定符

就提供了这个功能。下面的Visual Basic Scripting Edition 正则表达式可以匹配具有任何位数的章节标题:



/Chapter [1-9][0-9]*/



下面的 VBScript 正则表达式执行同样的匹配:



"Chapter [1-9][0-9]*"



请注意限定符出现在范围表达式之后。因此,它将应用于所包含的整个范围表达式,在本例中,只指定了从 0 到 9 的数

字。



这里没有使用 '+' 限定符,因为第二位或后续位置上并不一定需要一个数字。同样也没有使用 '?' 字符,因为这将把章

节数限制为只有两位数字。在 'Chapter' 和空格字符之后至少要匹配一个数字。



如果已知章节数限制只有99 章,则可以使用下面的 Visual Basic Scripting Edition 表达式来指定至少有一位数字,但

不超过两个数字。



/Chapter [0-9]{1,2}/



对 VBScript 可以使用下述正则表达式:



"Chapter [0-9]{1,2}"



上述表达式的缺点是如果有一个章节号大于 99,它仍只会匹配前两位数字。另一个缺点是某些人可以创建一个 Chapter

0,而且仍能匹配。一个更好的用来匹配两位数的 Visual Basic Scripting Edition 表达式如下:



/Chapter [1-9][0-9]?/



或者



/Chapter [1-9][0-9]{0,1}/



对 VBScript 而言,下述表达式与上面等价:



"Chapter [1-9][0-9]?"



或者



"Chapter [1-9][0-9]{0,1}"



'*'、 '+'和 '?' 限定符都称之为贪婪的,也就是说,他们尽可能多地匹配文字。有时这根本就不是所希望发生的情况。

有时则正好希望最小匹配。



例如,你可能要搜索一个 HTML 文档来查找一处包含在 H1 标记中的章节标题。在文档中该文字可能具有如下形式:



Chapter 1 – Introduction to Regular Expressions





下面的表达式匹配从开始的小于号 (<) 到 H1 标记结束处的大于号之间的所有内容。



/<.*>/



VBScript 的正则表达式为:



"<.*>"



如果所要匹配的就是开始的 H1 标记,则下述非贪婪地表达式就只匹配





/<.*?>/



或者



"<.*?>"



通过在 '*'、 '+' 或 '?' 限定符后放置 '?',该表达式就从贪婪匹配转为了非贪婪或最小匹配。




相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 《龙珠:超宇宙》 战斗E3 2014:瘆人僵尸《消 asp代码实现access数据导出到excel文件如何使用FSO读取Js文件内容并可以编辑修改对初学者有用的一些asp函数集学习ASP编程必会的代码

人气排行 asp代码实现access数据导出到excel文件asp不需要任何配置的伪静态实现如何使用FSO读取Js文件内容并可以编辑修改asp去除html标记和空格的代码Asp全选删除代码教大家网页伪静态知识及其2种实现方法Microsoft SQL Server 7.0安装问题(一)ASP.NET中的Code Behind技术4