问题标签 [non-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 投票
5 回答
470 浏览

c# - 为什么这个正则表达式很贪婪?

我正在尝试提取“”中包含 /thumb/ 的所有链接。其实我只需要使用图像src。我不知道图片是否会以 jpg 结尾,或者是否会有区分大小写的问题等。我真的只关心完整的链接。

我的完整代码

thumbUrl 看起来像

center\"> ... 很多文字,没有 /thumbs/ ... src=\" http://images.fdhkdhfkd.com/thumbs/dfljdkl/22350.jpg

0 投票
1 回答
302 浏览

sql - Regex: match SQL PRINT blocks with quoted text in it

I have the following text I am trying match using regular expressions:

PRINT CONVERT(NVARCHAR, CURRENT_TIMESTAMP, 111) + ' ' + CONVERT(NVARCHAR, CURRENT_TIMESTAMP, 108) + ' -Test Mode : ' + (CASE WHEN @turbo_mode_ind = 1 THEN 'some text ''test'' some more text.' ELSE 'and even more text ''temp'' when will it stop ?' END)

PRINT 'text don''t text'

PRINT 'text ''test2'' text'

What I want to match is:

PRINT CONVERT(NVARCHAR, CURRENT_TIMESTAMP, 111) + ' ' + CONVERT(NVARCHAR, CURRENT_TIMESTAMP, 108) + ' -Test Mode : ' + (CASE WHEN @turbo_mode_ind = 1 THEN 'some text ''test''

PRINT 'text ''test2''

So basically I want to match:

  • starting at PRINT
  • each char that comes after PRINT (.*)
  • inclusive line-breaks (don't stop at line-breaks)
  • with \'{2}\w+\'{2} at the end of the match
  • non-greedy (.*?)
  • AND no empty line(s) between PRINT and \'{2}\w+\'{2}

I have already compsed this, but it still matches empty line(s):

PRINT.*?\'{2}\w+\'{2}(?!\n\s*\n)

0 投票
3 回答
93764 浏览

.net - 正则表达式:最小可能匹配或非贪婪匹配

如何告诉 RegEx(.NET 版本)获得最小的有效匹配而不是最大的匹配?

0 投票
12 回答
343418 浏览

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

这两个术语是什么意思?

0 投票
1 回答
1115 浏览

regex - Xcode 惰性正则表达式

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

和:

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

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

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

0 投票
3 回答
1080 浏览

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

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

输出:

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

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

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

0 投票
3 回答
7899 浏览

regex - sed 非贪婪花括号匹配

我在文件 a.txt 中有一个字符串

{moslate}alho{/moslate}otra{moslate}a{/moslate}

需要otra使用 sed 获取字符串。

有了这个正则表达式

sed 's|{moslate}.*{/moslate}||g' a.txt

a 根本没有输出,但是当我将 a 添加?到正则表达式时

s|{moslate}.*?{/moslate}||g a.txt

(我在某处读过它使正则表达式不贪婪)我根本没有匹配,我的意思是得到以下输出

{moslate}alho{/moslate}otra{moslate}a{/moslate}

如何使用 sed 获得所需的输出?

0 投票
3 回答
135810 浏览

regex - .* 和有什么不一样?和 .* 正则表达式?

我正在尝试使用正则表达式将字符串分成两部分。该字符串的格式如下:

我一直在使用(.*?)<并且<(.*?)>工作正常,但是在稍微阅读了正则表达式之后,我才开始想知道为什么我需要?在表达式中。我只是在通过这个网站找到它们之后才这样做,所以我不确定有什么区别。

0 投票
1 回答
256 浏览

regex - 在正则表达式中,它被称为惰性还是非贪婪?

我最初听到它是不贪婪的。然后在“网络上”的引用中,我看到它被称为懒惰。它是哪一个?

0 投票
2 回答
2756 浏览

python - Python re 中的贪婪与非贪婪匹配

请帮助我发现这是否是 Python (2.6.5) 中的错误,是我编写正则表达式的能力,还是我对模式匹配的理解。

(我接受一个可能的答案是“升级你的 Python”。)

我正在尝试解析 Yubikey 令牌,允许使用可选的附加功能。

当我使用此正则表达式匹配没有任何可选附加项的令牌时(即,仅包含与两个捕获组匹配的内容),匹配失败:

但是,如果我让第一组不贪婪:

它成功了。

所以,好的,它正在工作,但我原以为这两个正则表达式之间最终结果的唯一区别是性能。

Expresso 和 Regex Coach 都喜欢这两种模式。

我错过了什么?


这是我正在测试的两个字符串。

没有可选的附加功能(可能失败的附加功能):

带有可选的附加功能(到目前为止还没有失败;实际的选项卡在此处显示为“_”):


我尝试使用 Alex Martelli 的建议来重现它,并且它在原始 Python 环境中不会失败,所以我将重新访问我的代码(我实际上是在 yubikey-python 上进行黑客攻击);我会在一天左右回来报告。


我向大家道歉。我无法重现该问题。getpass当它发生时,我正在通过;读取输入。我怀疑意外的外键击中了。

我要结束这个问题。如果支持该问题的人希望取消他们的投票,那是公平的。

很抱歉。