问题标签 [regex-greedy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
2745 浏览

regex - 为什么正则表达式默认是贪婪的?

对于编写正则表达式的初学者来说,这似乎是一个巨大的困惑源,可能会导致隐藏的性能问题,而且典型的用例似乎是非贪婪的。

这仅仅是出于遗留原因(这是它最初是如何完成的,并且每个实现都复制它),还是有它的原因?

0 投票
12 回答
343418 浏览

regex - 在正则表达式的上下文中,“懒惰”和“贪婪”是什么意思?

这两个术语是什么意思?

0 投票
1 回答
1115 浏览

regex - Xcode 惰性正则表达式

我正在尝试替换这样的东西:

和:

在 Xcode 中。所以这些是源文件......我敢打赌正则表达式看起来像这样:

但我需要这个懒惰。否则 .+) 将匹配最后一个括号出现而不是第一个(例如,在给定以下字符串的情况下,最后的两个括号都将替换为单个括号:"NSLog(@"%@", NSSomeFunction(@"hey", @ “哈哈”))” )。

如何做这样的懒惰搜索?我认为您可以使用修饰符 /U(不贪婪)在珍珠中做到这一点。尽管 Xcode 似乎不支持这一点。

0 投票
3 回答
1080 浏览

regex - 正则表达式表现得很懒惰,应该是贪婪的

我认为默认情况下我的正则表达式会表现出我想要的贪婪行为,但它不在以下代码中:

输出:

现在我意识到,如果我只是按长度降序对关键字进行排序,我可以让它适用于这个小例子,但是

  • 我想了解为什么这不能按预期工作,并且
  • 我正在处理的实际项目在正则表达式中有更多的单词,并且保持它们按字母顺序排列很重要。

所以我的问题是:为什么这是懒惰的,我该如何解决?

0 投票
1 回答
3629 浏览

regex - 非贪婪正则表达式匹配、JavaScript 和 ASP

我需要做一个非贪婪的比赛,希望有人能帮助我。我有以下内容,我正在使用 JavaScript 和 ASP

上面的匹配,匹配一个 href 标记的第一个开始。我需要它只匹配作为/pdf/文件夹一部分的最后一个 href。

有任何想法吗 ?

0 投票
3 回答
132222 浏览

javascript - 如何使正则表达式变为非贪婪?

我正在使用 jQuery。我有一个带有特殊字符块(开始和结束)的字符串。我想从那个特殊字符块中获取文本。我使用正则表达式对象进行字符串查找。但是当有两个或更多特殊字符时,如何告诉 jQuery 查找多个结果?

我的 HTML:

和我的 JavaScript 代码:

我的结果是:[|cơ thử|nghiệm|] thị trường [|test2|đây là test lần 2|] chứng khoán [|Mỹ|day la nuoc my|]。但这不是我想要的结果:(。如何获得时间 1 的 [text] 和时间 2 的 [demo] ?


在网上搜索信息后,我刚刚完成了我的工作^^。我制作这样的代码:

  • 我的结果是:[|cơ thử|nghiệm|],[|test2|đây là test lần 2|] 这是对的!但我真的不明白这一点。你能回答我为什么吗?
0 投票
4 回答
1828 浏览

regex - 使用非贪婪限定符还是前瞻更好?

我有一个可能很大的文本块来搜索 的实例[[...]],其中...可以是任何东西,包括其他括号(尽管它们不能嵌套; after 的第一个实例]]结束[[匹配)。

我可以想出两种方法来匹配这个文本:

  • 使用非贪婪限定符:/\[\[.+?\]\]/
  • 使用前瞻:/\[\[(?:(?!\]\]).)+\]\]/

从性能的角度来看,一个选择本质上是否比另一个更好(我会说第一个可能更具可读性)?我记得读过最好不要使用非贪婪的限定符,但我现在找不到来源。

0 投票
7 回答
145561 浏览

regex - 如何在 grep 中进行非贪婪匹配?

我想 grep 最短的匹配,模式应该是这样的:

... 表示任何字符,输入是多行。

0 投票
1 回答
473 浏览

c# - 正则表达式太贪心

我正在编写一个正则表达式来匹配来自 IMDb 音轨数据文件的数据。我的正则表达式大部分都在工作,尽管它们在我的命名组中插入了太多文本。以下面的正则表达式为例:

表演者组包括字符串' (qv)以及表演者的姓名。不幸的是,由于记录的格式不一致,一些表演者的名字用单引号引起来,而另一些则没有。这意味着就正则表达式而言,它们是可选的。

我尝试使用?>组说明符将最后一组标记为贪婪组,但这似乎对结果没有影响。

我可以通过更改执行者组以匹配一小部分字符来改进结果,但这会降低我正确解析名称的机会。此外,如果我只是排除撇号字符,我将无法解析包含撇号的乐队名称,例如 Elia 的 Lonely Friends Band,他们在Resident Evil: Apocalypse中表演了Run For Your Life

更新: 这是正则表达式应按要求匹配的示例输入行。还提供了我现有的正则表达式无法处理的其他格式。

0 投票
1 回答
843 浏览

regex - 正则表达式不够贪婪

在出现新情况之前,我有以下正则表达式运行良好

基本上,它用于 URL,在 U= 或 URL= 之后抓取所有内容并在 URL 匹配中返回它

所以,对于以下

http://localhost?a=b&u=http://otherhost?foo=bar

URL = http://otherhost?foo=bar

不幸的是,出现了一个奇怪的案例

http://localhost?a=b&u=http://otherhost?foo=bar&url=http://someotherhost

理想情况下,我希望 URL 为“ http://otherhost?foo=bar&url=http://someotherhost ”,而只是“ http://someotherhost

编辑:我认为这解决了它......虽然它不漂亮