网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.三天学好ADO之第三天.
.亲密接触ASP.Net(6).
.ASP系列讲座(十五)使用 HTML 表.
.ASP+全新接触(2).
.Asp深度揭密(上).
.解析asp的脚本语言.
.ASP系列讲座(八)使用集合.
.利 用 ISAPI 实 现 向 数 据 库 .
.asp+语法介绍(五)----asp+的服务.
.ASP 3.0高级编程(三十七).
.SQL数据操作基础(初级) 2.
..Net边学边讲(三).
.WAP中的ASP技术(三).
.Microsoft 脚本编码器(1) --- 概.
.ASP 3.0高级编程(四十五).
.在ADO使用SELECT语法四.
.ASP 3.0高级编程(二十九).
.ASP 3.0高级编程(十四).
.@ 指令参考之三 - @LANGUAGE.
.十天学会ASP之第九天.

正则表达式简介(11)

发表日期:2000-8-24


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 标记中的章节标题。在文档中该文字可能具有如下形式:

<H1>Chapter 1 – Introduction to Regular Expressions</H1>

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

/<.*>/

VBScript 的正则表达式为:

"<.*>"

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

/<.*?>/

或者

"<.*?>"

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

上一篇:正则表达式简介(9-10) 人气:14989
下一篇:正则表达式简介(12) 人气:13815
浏览全部正则表达式简介的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐