Javascript 为什么不情愿的量词选择下一个atom regexp参数?
我明白了根据正常的quantify选择并返回最小值,但我不明白为什么要定义下一个regexp原子的选择不贪婪。有人知道是否有一个表示不情愿的量词的基本表达式(如果存在的话)?如果我看到了我能理解的表达式,但我只搜索并找到了对Javascript 为什么不情愿的量词选择下一个atom regexp参数?,javascript,regex,non-greedy,Javascript,Regex,Non Greedy,我明白了根据正常的quantify选择并返回最小值,但我不明白为什么要定义下一个regexp原子的选择不贪婪。有人知道是否有一个表示不情愿的量词的基本表达式(如果存在的话)?如果我看到了我能理解的表达式,但我只搜索并找到了对?=和联合使用的引用但我不知道是否是这样,因为我无法使用它 如何工作(我猜): console.log(“贪婪的regexp示例(预期\“'blablabla'是'bla'\”); log(“'blablabla'是'bla'所以…).match(/'.'*/); log(
?=
和联合使用的引用代码>但我不知道是否是这样,因为我无法使用它
如何工作(我猜):
console.log(“贪婪的regexp示例(预期\“'blablabla'是'bla'\”);
log(“'blablabla'是'bla'所以…).match(/'.'*/);
log(“非贪婪的regexp示例(预期为\“''\”但返回\“'blablabla'\”));
console.log(“'blablabla'是'bla'所以…).match(/'.*?'/)代码>*
使表达式变得贪婪
?
使表达式变懒
在这种情况下,match(/“.*?”/)
被读取为“单引号后跟任何字符(.)零次或多次(*),但仅在下一个(?)单引号之前”
大多数正则表达式备忘单都会描述这类表达式。就我个人而言,我喜欢(州*是贪婪的)
将*
声明为贪婪
将*
声明为贪婪。“*
使表达式贪婪” — 否,*
是一个量词,当在标记后使用时,它使正则表达式与该标记匹配零次或多次。这与贪婪无关。缺少限定符?
(在量词之后)是导致子表达式贪婪的原因。如果需要?
使“*”不贪婪,那么*
怎么不贪婪呢?你有任何资源来说明这一点吗?我所看到的一切都将*
归类为贪婪。贪婪的不是*
。默认情况下,一切都是贪婪的,除非?
限定符存在。
不是贪婪的,示例中的单引号也不是贪婪的。是的,它是贪婪的<代码>
只匹配一个字符。一旦比赛结束,比赛就结束了,在那之后,再也没有其他的比赛了。这是贪婪。如果它不是贪婪的,
几乎总是不匹配任何东西,例如“abc”。匹配(/./)
将是空的
或[“”]
,但它不是。非贪婪单
看起来像/。??/
,其中第一个?
意思是{0,1}
(至少0,最多1),第二个?
意思是“尽可能少地使用字符”(在本例中为0)。请澄清文章的第一句话好吗?目前,它在语法上是不正确的,所以很难理解你期望什么以及为什么。你认为在/'.*中什么是贪婪的和非贪婪的?'/
?我不明白你为什么期望第二个正则表达式是'
。非贪婪匹配在那里的行为是正确的。你到底期望什么?为什么?如果您只希望匹配分隔符,那么您所期望的不是非贪婪匹配;将已知的分隔符与regex匹配有什么意义?我希望'
,因为在一个示例中(“abla”).match(/a.*?/)
返回“a”
,因为其中提到了算法的逻辑,但是如果我把(“abla”).match(/a.*a/)放进去
its返回整个值(“abla”)。match(/a.*?/)
返回[“a”]
,因为*?
意味着“匹配任何字符(
),零次或多次(*
),尽可能少的次数(?
)”。“尽可能少的次数”是不同的,这取决于围绕这个子表达式还需要匹配什么。