问题标签 [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.
javascript - The last string don't match the regex right
I need som regex help. I have this code that i want to match.
The last one don't match that i want. I just want it to match the first ul#items and stop when the first {{/items}} comes. The reg works without html tags for the first two.
I need some help to figure out how to do the last one.
Thanks
regex - Perl 非贪婪
我遇到了非贪婪正则表达式(正则表达式)的问题。我看到有关于非贪婪正则表达式的问题,但他们没有回答我的问题。
问题:我正在尝试匹配“lol”锚的href。
注意:我知道这可以通过 Perl HTML 解析模块来完成,我的问题不是关于在 Perl 中解析 HTML。我的问题是关于正则表达式本身,而 HTML 只是一个例子。
测试用例:我有四个测试.*?
和[^"]
。两者首先产生了预期的结果。但是第三个没有,第四个只是,但我不明白为什么。
- 为什么
.*?
第三个测试在和的两个测试中都失败了[^"]
?非贪婪的操作员不应该工作吗? - 为什么第四个测试在 和 的测试中都
.*?
有效[^"]
?我不明白为什么.*
在前面包含 a 会改变正则表达式(第三个和第四个测试是相同的,除了.*
前面的)。
我可能不完全理解这些正则表达式是如何工作的。Perl Cookbook recipe提到了一些东西,但我不认为它回答了我的问题。
python - 正则表达式:匹配方括号贪婪和非贪婪
我正在使用 python 正则表达式模块,re
.
我需要在这两个短语上匹配 '(' ')' 内的任何内容,但“不要那么贪婪”。像这样:
结果应该从短语 1 返回:
结果应该从短语 2 返回:
问题是,为了适应第一句话,我用'\(.*?\)'
这,在第二个短语,正好适合+ (* (2 4)
并使用'\(.*\)'
正确地适合第二个短语,在第一个短语上适合(name) of the (person)
什么正则表达式对这两个短语都有效?
java - Java正则表达式需要新鲜的眼睛,这太贪心了
我有一个形式的字符串:
目的是在一个组中捕获 canonical_class_name,然后交替 key=value 组。目前它不匹配测试字符串(在下面的程序中,testString
)。
必须至少有一个键/值对,但可能有很多这样的对。
问题:目前正则表达式正确地抓取了规范的类名和第一个键,但是它吞噬了所有内容,直到最后一个双引号,我如何让它变得懒惰地抓取键值对?
这是以下程序放在一起的正则表达式:
根据您的喜好,您可能会发现程序版本更易于阅读。
如果我的程序传递了字符串:
...这些是我得到的组:
还有一点需要注意,使用String.split()
I 可以简化表达式,但我将其作为一种学习经验来更好地理解正则表达式,所以我不想使用这样的捷径。
javascript - 帮助正则表达式
我不太擅长正则表达式,需要一些帮助。
我有一个类似于以下的字符串:
我正在尝试将其与以下正则表达式匹配:
但它不匹配。然后我调试了。这是我用于调试的正则表达式:
这是字符串:
这是比赛:
{type='cost', field='flag & e band 100s ($1/M's)', value='680'},{type='cost', field='29 versions', value='250'}
我明白为什么这个字符串是匹配的。我不明白为什么没有匹配其他字符串。我希望其他匹配的字符串是:
{type='cost', field='flag & e band 100s ($1/M's)', value='680'},
{type='cost', field='29 个版本', value='250'}
为什么没有进行这些比赛?
c# - 正则表达式太贪婪
我需要验证一个范围。输入格式如下:
我正在使用以下正则表达式:
当用户输入"anydate between 20100101 ~~ 20100101 and test1"
失败时,它会捕获 until test1
。
如何使我的正则表达式不那么贪婪并且只捕获直到20100101
?
java - java - 如何在java正则表达式中跨多行以非贪婪方式提取?
如果我有一堆跨多行的数据,我如何使它不贪心?我所拥有的是贪婪的。
示例数据
到目前为止,这是我的代码
regex - 带有 OR 的惰性正则表达式
我有以下形式的字符串:
我想懒惰地匹配abc
,abcd
和abcde
,所以我可以得到第一个组件。所以像
但是,正则表达式OR
贪婪匹配cba
,我得到oscard
我怎么能懒惰匹配这个OR
?语言是 R,但它可以像 grep 或 perl 一样工作。
regex - 分隔符之间的匹配文本:贪婪或惰性正则表达式?
对于分隔符(例如<
和>
)之间匹配文本的常见问题,有两种常见模式:
- 使用贪心
*
或+
量词的形式START [^END]* END
,例如<[^>]*>
,或 - 在表格中使用惰性
*?
或+?
量词START .*? END
,例如<.*?>
.
有什么特别的理由偏爱其中一个吗?
regex - 需要修改非贪婪 grep 的行为
我正在尝试清除大量注入客户博客的垃圾邮件。其中一个问题是,最初进行注入的黑客这样做的方式实际上是以格式错误的多嵌入链接结束的,所以我很难以简洁的方式抓住它们。
我的想法是将帖子表中的所有链接转储到一个文本文件中,然后从该列表中删除有效链接,然后从那里创建一个 bash 脚本,一次删除一行恶意链接。我试图使用非贪婪的 grep 来转储链接,否则如果帖子中有多个链接,它将从第一个链接的开头到最后一个链接的结尾。这是我使用的行:
当它试图解析嵌入在其他链接中的链接时,就会出现问题。例如,我得到这个:
从这样的部分:
不过,并非所有链接都像这样被破坏,如果我清除上面命令的输出,我认为这将使追踪碎片变得非常困难。我认为我需要的是抓住整个街区的东西(即,将开口<a href
与相同数量的关闭匹配</a>
),或者只是可能的最小内部匹配(即从内到外的贪婪),然后我多次通过,但我也愿意接受其他建议。对此有什么想法吗?谢谢!