限定符
有时候不知道要匹配多少字符。为了能适应这种不确定性,正则表达式支持限定符的概念。这些限定符可以指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。 copyright dedecms
下表给出了各种限定符及其含义的说明:
对一个很大的输入文档而言,章节数很轻易就超过九章,因此需要有一种方法来处理两位数或者三位数的章节号。限定符就提供了这个功能。下面的JScript 正则表达式可以匹配具有任何位数的章节标题:
/Chapter [1-9][0-9]*/
copyright dedecms
下面的 VBScript 正则表达式执行同样的匹配: 织梦好,好织梦
"Chapter [1-9][0-9]*"
织梦内容管理系统
请注重限定符出现在范围表达式之后。因此,它将应用于所包含的整个范围表达式,在本例中,只指定了从 0 到 9 的数字。 内容来自dedecms
这里没有使用 ' ' 限定符,因为第二位或后续位置上并不一定需要一个数字。同样也没有使用 '?' 字符,因为这将把章节数限制为只有两位数字。在 'Chapter' 和空格字符之后至少要匹配一个数字。 copyright dedecms
假如已知章节数限制只有99 章,则可以使用下面的 JScript 表达式来指定至少有一位数字,但不超过两个数字。
内容来自dedecms
/Chapter [0-9]{1,2}/
本文来自织梦
对 VBScript 可以使用下述正则表达式: 内容来自dedecms
"Chapter [0-9]{1,2}"
dedecms.com
上述表达式的缺点是假如有一个章节号大于 99,它仍只会匹配前两位数字。另一个缺点是某些人可以创建一个 Chapter 0,而且仍能匹配。一个更好的用来匹配两位数的 JScript 表达式如下:
/Chapter [1-9][0-9]?/
内容来自dedecms
或者
织梦内容管理系统
/Chapter [1-9][0-9]{0,1}/
织梦好,好织梦
对 VBScript 而言,下述表达式与上面等价: copyright dedecms
"Chapter [1-9][0-9]?"
copyright dedecms
或者
织梦好,好织梦
"Chapter [1-9][0-9]{0,1}"
copyright dedecms
'*
'、 ' '
和 '?'
限定符都称之为贪婪的,也就是说,他们尽可能多地匹配文字。有时这根本就不是所希望发生的情况。有时则正好希望最小匹配。
例如,你可能要搜索一个 HTML 文档来查找一处包含在 H1 标记中的章节标题。在文档中该文字可能具有如下形式:
<H1>Chapter 1 – Introduction to Regular Expressions</H1>
copyright dedecms
下面的表达式匹配从开始的小于号 (<) 到 H1 标记结束处的大于号之间的所有内容。
/<.*>/
dedecms.com
VBScript 的正则表达式为: 内容来自dedecms
"<.*>"
文章评论
共有位Admini5网友发表了评论 查看完整内容