正则表达式量词

来自泡泡学习笔记
BrainBs讨论 | 贡献2023年8月14日 (一) 15:16的版本 (创建页面,内容为“ 量词表示要匹配的字符或表达式的数量。 <span id="x-2"></span> == <code>x*</code> == 将前面的项<code>"x"</code>匹配 0 次或更多次。例如,<code>/bo*/</code>匹配<code>"A ghost booooed"</code>中的<code>"boooo"</code>和<code>"A bird warbled"</code>中的<code>"b"</code>,但在<code>"A goat grunt"</code>中没有匹配。 <span id="x-3"></span> == <code>x+</code> ==…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

量词表示要匹配的字符或表达式的数量。

x*

将前面的项"x"匹配 0 次或更多次。例如,/bo*/匹配"A ghost booooed"中的"boooo""A bird warbled"中的"b",但在"A goat grunt"中没有匹配。

x+

将前一项"x"匹配 1 次或更多次。等价于{1,}。例如,/a+/匹配"candy"中的"a""caaaaaaandy"中的"a"

x?

将前面的项"x"匹配 0 或 1 次。例如,/e?le?/匹配 angel 中的 elangle 中的 le

如果立即在任何量词*、+、?或{}之后使用,则使量词是非贪婪的 (匹配最小次数),而不是默认的贪婪的 (匹配最大次数)。

x{n}

其中"n"是一个正整数,与前一项"x"的 n 次匹配。例如,/a{2}/ 不匹配"candy"中的"a",但它匹配"caandy"中的所有"a",以及"caaandy"中的前两个"a"

x{n,}

其中,"n"是一个正整数,与前一项"x"至少匹配"n"次。例如,/a{2,}/不匹配"candy"中的"a",但匹配"caandy""caaaaaaandy"中的所有 a

x{n,m}

其中,"n"是 0 或一个正整数,"m"是一个正整数,m > n。 至少与前一项"x"匹配"n"次,最多匹配"m"次。例如,/a{1,3}/不匹配"cndy"中的"a""candy"中的"a""caandy"中的两个"a",以及"caaaaaaandy"中的所有"a"。注意,当匹配"caaaaaaandy"时,匹配的是"aaa",即使原始字符串中有更多的"a"

x*? x+? x?? x{n}? x{n,}? x{n,m}?

默认情况下,像 * 和 + 这样的量词是”贪婪的”,这意味着它们试图匹配尽可能多的字符串。量词后面的字符?使量词”非贪婪”:意思是它一旦找到匹配就会停止。例如,给定一个字符串"some <foo> <bar> new </bar> </foo> thing":

/<.*>/  
["<foo> <bar> new </bar> </foo>"]

/<.*?>/ 
["<foo>", "<bar>", "</bar>", "</foo>"]