标题 | 正则表达式限定符 |
内容 | 如果您不能指定构成匹配的字符的数量,那么正则表达式支持限定符的概念。这些限定符使您能够指定,为使匹配为真,正则表达式的某个给定组件必须出现多少次。 下表说明各种限定符以及它们的含义: 字符 说明 * 零次或多次匹配前面的字符或子表达式。例如,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?。注意:您不能将空格插入逗号和数字之间。 由于章节编号在大的输入文档中会很可能超过九,所以您需要一种方式来处理两位或三位章节编号。限定符给您这种能力。下面的正则表达式匹配编号为任何位数的章节标题: /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>。 /<.*?>/ 通过在 *、+ 或 ? 限定符之后放置 ?,该表达式从“贪心”表达式转换为“非贪心”表达式或者最小匹配。 |
随便看 |
|
在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。