`

9.正则表达式:限定符

阅读更多

如果您不能指定构成匹配的字符的数量,那么正则表达式支持限定符的概念 。这些限定符使您能够指定,为使匹配为真,正则表达式的某个给定组件必须出现多少次。

 

下表说明各种限定符以及它们的含义:

字符 说明
* 零次或多次 匹配前面的字符或子表达式。例如,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 }

mn 是非负整数,其中 n <= m至少匹配 n 次,至多匹配 m 。例如,o{1,3} 匹配 fooooood 中的头三个 o。o{0,1} 等效于 o?。注意:您不能将空格插入逗号和数字之间。

 

 

由于章节编号在大的输入文档中会很可能超过九,所以您需要一种方式来处理两位或三位章节编号。限定符给您这种能力。下面的正则表达式匹配编号为任何位数的章节标题:

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

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

这里不使用 + 限定符,因为在第二个位置或后面的位置不一定需要有一个数字。也不使用?字符,因为它将章节编号限制到只有两位数。您需要至少匹配 Chapter 和空格字符后面的一个数字。

如果您知道章节编号被限制为只有 99 章,可以使用下面的表达式来至少指定一位但至多两位数字。

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

上面的表达式的缺点是,大于 99 的章节编号仍只匹配开头两位数字。另一个缺点是 Chapter 0 也将匹配。只匹配两位数字的更好的表达式如下:

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

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

 

*、+ 和 ? 限定符都被称为“贪心的”,因为它们匹配尽可能多的文本。 但是,有时您只需要最小的匹配。

例如,您可能搜索 HTML 文档,以查找括在 H1 标记内的章节标题。该文本在您的文档中如下:

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

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

/<.*>/

如果您只需要匹配开始 H1 标记,下面的“非贪心”表达式 匹配 <H1>。

/<.*?>/

 

通过在 *、+ 或 ? 限定符之后放置 ?,该表达式从“贪心”表达式转换为“非贪心”表达式或者最小匹配。

分享到:
评论

相关推荐

    正则表达式.pdf

    4. 限定符:包括*、+、?、{n}、{n,}、{n,m}等,用于指定模式的重复次数。 正则表达式的使用场景: 1. 字符串匹配:使用正则表达式可以对字符串进行模式匹配,例如匹配Email地址、电话号码、网址等。 2. 字符串提取...

    史上最好的正则表达式教程.pdf

    可以通过在重复限定符后添加问号来实现懒惰匹配,如.*?。 11. 处理选项:可以在正则表达式中设置各种选项,例如忽略大小写(i)、全局匹配(g)等。 12. 平衡组/递归匹配:属于高级特性,用于匹配成对出现的模式,...

    Python正则表达式笔记

    10. 基础语法:正则表达式的基础语法包括限定符、匹配1个或多个表达式、匹配0个或多个表达式、匹配0个或1个表达式等。 11. 限定符:包括 *、+、? 等符号,它们用于指定匹配次数。 12. 元字符:包括 .、\d、\D、\w...

    正则表达式---------资料整理,适合新手学习使用,对正则表达式的学习很有帮助

    4. 正则表达式的运算符:包括限定符、定位符、选择符等等。 5. 正则表达式的应用:正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix 等),HP 等操作系统,PHP,C#,Java 等开发环境,以及很多的...

    正则表达式语法大全_手册.doc

    2. 限定符:限定符用于指定模式匹配的次数,例如: * `{n}`:正好匹配 n 次。 * `{n,}`:至少匹配 n 次。 * `{n,m}`:匹配至少 n 次,至多 m 次。 3. 字符类:字符类用于匹配特定的字符集,例如: * `.`:匹配除...

    正则表达式系统教程.CHM

    :/5.htm#3.4_限定符"&gt;3.4_限定符&lt;/a&gt;&lt;br /&gt;&lt;a href="mk:@MSITStore:C:Documents%20and%20Settingschenxh桌面dsfCHM.chm::/5.htm#3.5_定位符"&gt;3.5_定位符&lt;/a&gt;&lt;br /&gt;&lt;a href="mk:@MSITStore:C:Documents%20and%20...

    正则表达式学习视频

    5. 重复限定符的惰性匹配:在量词后添加?,如.*?,使得匹配尽可能短的子串。 在JavaScript中的应用,你将了解到: 1. 使用`test()`、`match()`、`search()`、`replace()`和`split()`等JavaScript字符串方法与正则...

    python正则表达式_深入浅出

    - 连接多个正则表达式时,除了边界限定条件或命名组操作外,复杂表达式遵循简单的连接原则。 #### 四、应用场景 - **文本处理**:从文本中提取特定格式的信息,如日期、邮箱地址等。 - **验证输入**:确保用户...

    Source Insight_正则表达式举例

    ### 正则表达式在Source Insight中的应用实例 #### 一、正则表达式的概念与基本语法 正则表达式是一种强大的文本匹配工具,广泛应用于各种编程语言和文本处理工具中,包括Source Insight等代码编辑器。通过正则...

    正则表达式学习,常用的正则表达式

    正则表达式的逻辑或和数量限定 在正则表达式中,`[]` 表示逻辑或的功能,例如 `[r3][p4][a6][w5]`。而 `{}` 则表示不进行匹配,值表示需要匹配的数量,例如 `[0-9]{3}` 则表示匹配 0-9 任意三个字符,`[0-9]{3,6}` ...

    正则表达式全解及正则表达式学习心得

    正则表达式全解及正则表达式学习心得 正则表达式是字符串模式匹配的强大工具,掌握正则表达式可以让开发者更方便地处理字符串数据。本文将对正则表达式的基本概念、元字符、模式匹配、量词、分组、字符类、边界匹配...

    正则表达式之道-ppt

    - 限定符(Quantifiers):如`*`, `+`, `{n}`, 控制匹配的数量。 - 分组构造:如`()`,用于捕获和操作子表达式。 - 正则表达式选项:如`i`, `m`,改变匹配的行为,如大小写不敏感或多行模式。 - 替换构造:在替换...

    正则表达式大全.pdf

    在正则表达式中,不同的操作符有不同的优先级,了解这些优先级对于正确构建复杂的正则表达式至关重要。一般而言,括号`()`具有最高的优先级,其次是`^`、`$`、`*`、`+`、`?`、`.`、`{m,n}`等。 #### 六、全部符号...

    遨游在正则表达式的海洋

    ### 正则表达式知识点详解 #### 一、正则表达式概述 正则表达式是一种强大的文本处理工具,能够帮助我们实现对字符串的搜索、替换等操作。它在多种编程语言和环境中都有广泛的应用,如*nix系统(Linux、Unix等)、...

    正则表达式判断手机邮箱

    在实际应用中,我们可能会根据具体需求对这些正则表达式进行调整,比如限制手机号码的某些特定号码段,或者对邮箱地址的格式做更严格的限定。 在编程语言中,如JavaScript、Python、Java等,都有内置的正则表达式...

    php正则表达式手册

    正则表达式的操作符包含多种类型,包括限定符(如星号*表示“零个或多个”)、定位符(如脱字符^表示行首)、选择(如竖线|表示“或”)、后向引用(如反斜杠和数字组合,表示对前面捕获组的引用)等。这些操作符...

Global site tag (gtag.js) - Google Analytics