问题标签 [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 回答
991 浏览

regex - 正则表达式中的贪婪与否定字符类的问题

我有一个非常大的文件,看起来像这样(见下文)。我有两种基本的正则表达式可供选择(我知道可能还有其他选择,但我真的想比较贪婪和否定字符类)方法。

注意:如果我去掉 \d 周围的括号怎么办?

现在 + 是贪婪的,它强制回溯,但 Negated Char 类需要逐个字符比较。哪个更有效率?假设文件非常非常大,因此由于文件的长度,处理器使用的微小差异将变得夸大。

既然您已经回答了这个问题,如果我的 Negated Char Class 非常大,比如说 18 个不同的字符怎么办?这会改变你的答案吗?

谢谢。

ftp:1117 字节
ftp:5696 字节
ftp:3207 字节
ftp:5696 字节
ftp:7200 字节

0 投票
6 回答
1283 浏览

regex - 正则表达式贪婪问题

我确信这很容易,但我尝试了很多变化,但仍然无法满足我的需要。事情太贪婪了,我无法让它停止贪婪。

鉴于文字:

我只想选择:

我尝试了以下正则表达式

谢谢大家。

0 投票
5 回答
9998 浏览

regex - 正则表达式 nongreedy 是 greedy

我有以下文字

根据我正在阅读的这本书,当?在任何量词之后跟随时,它变得非贪婪。

我的正则表达式to*?n仍在返回tooooooooooooon

它应该返回ton不应该吗?

知道为什么吗?

0 投票
6 回答
6765 浏览

regex - 如何修复我的正则表达式,使其与贪婪的量词不匹配?

我有以下行:

我使用一个简单的正则表达式来解析它:

但是; 最后把事情搞砸了,我不知道为什么。贪婪的运营商不应该处理“一切”吗?

0 投票
6 回答
1344 浏览

regex - 正则表达式:懒惰更糟吗?

我一直写这样的正则表达式

但是我刚刚了解到这个懒惰的东西,我可以这样写

使用第二种方法有什么缺点吗?正则表达式肯定更紧凑(甚至 SO 也能更好地解析它)。

编辑:这里有两个最佳答案,指出表达式之间的两个重要区别。ysth 的回答指出了非贪婪/懒惰的弱点,其中超链接本身可能包含 A 标签的其他属性(绝对不好)。Rob Kennedy 指出了贪婪示例中的一个弱点,即锚文本不能包含其他标签(绝对不行,因为它也不会抓取所有锚文本)......所以答案是,正则表达式就是他们是,看似相同的惰性和非惰性解决方案可能在语义上并不等效。

编辑:第三个最佳答案是 Alan M 关于表达式的相对速度。暂时,我会将他标记为最佳答案,以便人们给他更多积分:)

0 投票
3 回答
20398 浏览

regex - 需要正则表达式来查找两个标记之间的子字符串

我怀疑这已经在某个地方得到了回答,但我找不到它,所以......

我需要从一个较大字符串中的两个标记之间提取一个字符串,其中第二个标记可能会再次出现,意思是......(伪代码......)

所以,当我使用表达式“ .+B=(.+);.+”运行它时,我得到“def_3%^123+-;C=123;” 大概是因为它只是寻找';'的最后一个实例 在字符串中,而不是停在第一个出现的地方。

我尝试使用 (?=) 来搜索第一个 ';' 但它给了我同样的结果。

我似乎找不到一个正则表达式参考来解释如何指定“NEXT”令牌而不是最后的那个。

非常感谢任何和所有帮助。


关于SO的类似问题:

0 投票
6 回答
1167 浏览

regex - 懒惰,贪婪,还是什么?寻找明确的正则表达式参考

最近,在网上的某个地方*,我找到了一个正则表达式的参考,它描述了贪婪的“第三种方式”,与贪婪匹配(.*)和惰性(.*?)匹配都不同。

我现在尝试搜索 SO、谷歌搜索,甚至搜索我的浏览器历史记录,但无济于事。

谁能猜出我看到了什么?


澄清:它指的是对我来说是一个新构造(类似于.*+),我相信它甚至有一个名称(类似于,但可能不是,“被动贪婪”)。


*我很欣赏“网络上的某个地方”与“在巴别图书馆中”或“在曼德布罗集合中”一样有用,但请尝试提供帮助

0 投票
5 回答
6941 浏览

regex - 为什么我的非贪婪 Perl 正则表达式不匹配?

我以为我在合理程度上理解 Perl RE,但这让我感到困惑:

印刷

捕获
的匹配 '

似乎它与结尾 ' 单独匹配,因此没有捕获任何内容。
我原以为它会匹配整个事物,或者如果它完全不贪婪,则什么都没有(因为所有事物都有一个可选匹配)。
这中间的行为让我感到困惑,谁能解释发生了什么?

0 投票
4 回答
423 浏览

regex - 为什么 Regex 完成 3000 行的 XML 文件非常慢?

我注意到正则表达式完成一个包含 3000 行 [1] 的 XML 文件非常慢:

我一直认为正则表达式是有效的。为什么完成 Regex 需要这么长时间?

[1] 如何在 VIM 中从 A 到 B 重复匹配?

0 投票
7 回答
135970 浏览

python - Python 非贪婪正则表达式

"(.*)"给定"a (b) c (d) e"python 匹配"b"而不是 ,如何制作这样的 python 正则表达式"b) c (d"

我知道我可以使用"[^)]"而不是".",但我正在寻找一个更通用的解决方案,让我的正则表达式更简洁。有没有办法告诉python“嘿,尽快匹配这个”?