正则表达式:非贪婪量词

摘要:在本教程中,您将学习如何使用非贪婪量词来匹配其前导元素的次数尽可能少。

JavaScript 正则表达式非贪婪(或懒惰)量词简介

在正则表达式中,量词允许您将匹配其前导元素的次数指定为特定的数字。

默认情况下,量词使用贪婪模式进行匹配。在贪婪模式下,量词尝试尽可能多地匹配并返回最大的匹配项。当量词使用贪婪模式时,它们被称为贪婪量词。在量词教程中,您学习了如何使用贪婪量词,例如*+?

除了贪婪模式之外,量词还在非贪婪模式或懒惰模式下工作。在懒惰模式下,量词匹配其前导元素的次数尽可能少,并返回最小的匹配项。当量词使用懒惰模式时,它们通常被称为非贪婪量词或懒惰量词。

要将贪婪量词转换为非贪婪量词,请在其中添加一个额外的问号。下表列出了贪婪量词及其相应的懒惰量词

贪婪量词懒惰量词意义
**?匹配其前导元素零次或多次。
++?匹配其前导元素一次或多次。
???匹配其前导元素零次或一次。
{ n }{ n }?准确匹配其前导元素 n 次。
{ n ,}{ n ,}?至少匹配其前导元素 n 次。
{ n , m }{ n , m }?匹配其前导元素 n 到 m 次。

JavaScript 非贪婪量词示例

以下程序使用非贪婪量词(+?)匹配按钮元素引号("")内的文本

const s = '<button type="submit" class="btn">Send</button>'
const pattern = /".+?"/g;

const result = s.match(pattern)
console.log(result);Code language: JavaScript (javascript)

输出

['"submit"', '"btn"']Code language: Python (python)

总结

  • 懒惰量词匹配其前导元素的次数尽可能少,以返回最小的可能匹配项。
  • 使用问号 (?) 将贪婪量词转换为懒惰量词。
本教程对您有帮助吗?