问题标签 [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.
regex - VBScript RegExp 不够贪心
我正在尝试编写一个简单的 sql 解析器来将 sql 语句分解为其基本部分。但是,我遇到了嵌套查询的问题。一个例子最好地说明:
在这里,我希望 where_part 包含“id in (select customer_id from Orders where 1=1)”,而 Everything_else 包含“select * from Customers”。也就是说,我希望它对第二个(。*)尽可能贪婪,对第一个无私。或者换一种说法,我希望everything_else 不包含任何地方。
但是,我得到了 everything_else = "select * from Customers where id in (select customer_id from Orders" and where_part = "1=1)"
如何在不使用混乱的非正则表达式字符串解析的情况下解决这个问题?
regex - sed中的非贪婪(不情愿)正则表达式匹配?
我正在尝试使用 sed 清理 URL 行以仅提取域。
所以从:
我想:
(无论有没有斜杠,都没有关系)
我试过了:
和(转义非贪婪量词)
但我似乎无法让非贪婪量词 ( ?
) 工作,所以它总是最终匹配整个字符串。
regex - 非贪婪的 LookAhead
我有如下字符串:
我可以用/^\w*/
.
我现在如何在没有“:”符号的情况下获得“密钥”?
谢谢
regex - 我怎样才能让我的比赛在 vim 中不贪心?
我有一个很大的 HTML 文件,其中包含很多如下所示的标记:
我正在尝试进行 Vim 搜索和替换以摆脱所有内容class=""
,style=""
但我无法使匹配变得不贪心。
我的第一次尝试是这个
但 Vim 似乎不喜欢?
. 不幸的是,删除?
会使比赛过于贪婪。
我怎样才能让我的比赛变得不贪婪?
regex - 正则表达式贪婪匹配没有按预期工作
我有一个非常基本的正则表达式,我只是不知道为什么它不起作用,所以问题是两个部分。为什么我当前的版本不起作用,正确的表达方式是什么。
规则非常简单:
- 必须至少有 3 个字符。
- 如果 % 字符是第一个字符,则必须至少有 4 个字符。
因此,以下情况应按如下方式解决:
- AB - 失败
- ABC-通过
- ABCDEFG - 通过
- % - 失败
- %AB - 失败
- %ABC - 通过
- %ABCDEFG - 通过
- %%AB - 通过
我使用的表达式是:
这对我来说意味着:
^
- 字符串的开始%?
- 贪心检查 0 或 1 % 字符\S{3}
- 3 个非空白字符
The problem is, the %?
for some reason is not doing a greedy check. It's not eating the % character if it exists so the '%AB' case is passing which I think should be failing. Why is the %?
not eating the % character?
Someone please show me the light :)
Edit: The answer I used was Dav below: ^(%\S{3}|[^%\s]\S{2})
Although it was a 2 part answer and Alan's really made me understand why. I didn't use his version of ^(?>%?)\S{3}
because it worked but not in the javascript implementation. Both great answers and a lot of help.
.net - 使用贪婪的正则表达式忽略可选后缀
我正在.NET 中针对如下所示的字符串执行正则表达式匹配:
我需要匹配最后没有数字的 URL 部分,以便我得到这个:
这是我正在尝试的正则表达式:
问题是最后一组被包括在中间组的比赛中。我也试过没有 * 最后但只有上面的第一个字符串匹配,而不是其余的。
我启用了多行选项。有任何想法吗?
c# - C# 惰性正则表达式匹配
我有一堆需要解析的文件,它们的文件名中都有两个日期模式之一(我们正在升级我们的系统,我们需要让文件解析器能够识别这两种日期格式,新和旧的)。
文件名看起来像<fileroot>_yyyyMMdd.log
or <fileroot>_MMddyy.log
,我需要能够解析出数字来解析日期,但是,每当我尝试使用正则表达式^.*(\\d{6,8}).*$
或^.*(\\d{6}|\\d{8}).*$
解析出日期的数字时,捕获组总是 6字符长度,即使是 8 位数的文件名。
有没有办法强制 C# 中的正则表达式库在尝试匹配正则表达式时尽可能详尽?我知道如何在 Java 中做到这一点,而不是 C# / .NET,我对这门语言还很陌生。
php - PHP preg_replace 非贪心麻烦
我一直在使用以下站点来测试 PHP 正则表达式,因此我不必不断上传: http ://www.spaweditor.com/scripts/regex/index.php
我正在使用以下正则表达式:
在以下字符串上(替换为空):
并且 preg_replace 正在返回:
但我希望它会返回:
我以为?是非贪婪修饰符。这里发生了什么?
.net - 正则表达式:最小可能匹配或非贪婪匹配
如何告诉 RegEx(.NET 版本)获得最小的有效匹配而不是最大的匹配?
c# - 为什么这个表达式不遵循贪婪的方法?
为什么这个表达式不遵循贪婪的方法?
输出:
p>如您所见: (dog) 组匹配 0 次。但是,* 是贪婪的,为什么不尝试找到 (dog) 的最大匹配项,即 1?
有什么线索吗?