问题标签 [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 投票
2 回答
141 浏览

ruby - 向后搜索时如何使用非贪婪修饰符?

我有一些疑问,例如:

这些查询具有不需要的前缀和后缀。我使用正则表达式来摆脱使用非贪婪的前缀.*?SELECT

我找不到使用非贪婪修饰符向后搜索来消除后缀的方法。

理想情况下,我想要一个模式来消除从行尾到“LIMIT”的第一个匹配项。如果我使用LIMIT.*?它不会匹配任何东西,而如果我只使用LIMIT.*它是贪婪的,我想避免。

我使用 Ruby 作为我的语言。

这是查询的示例:

这是所需的输出:

0 投票
2 回答
5163 浏览

regex - 如何捕获重复模式的每一个匹配项?

我有以下正则表达式:

我想捕获以下测试字符串中的所有颜色:

(现在只捕获红色和紫色)

打开此网址并查看匹配的组: http ://www.regex101.com/r/oZ2cH4

我已经阅读了以下http://www.regular-expressions.info/captureall.html但技巧没有奏效

(或者也许我做错了)

我该如何解决这个问题?

先感谢您

0 投票
4 回答
2130 浏览

.net - 非贪心正则表达式量词给出贪心结果

我有一个 .net 正则表达式,我正在使用 Windows Powershell 进行测试。输出如下:

我的期望是使用?量词会导致匹配为aaa bbb,因为第二组 a 足以满足表达式。我对非贪婪量词的理解是有缺陷的,还是我测试不正确?

注意:这与正则表达式 nongreedy is greedy显然不是同一个问题

0 投票
2 回答
978 浏览

regex - grep 正则表达式忽略行尾的注释

我试图通过许多旧的 PowerBASIC 源文件搜索变量,但我无法grep避免在行尾注释中匹配对变量的引用。

例如:

最初我使用的是:

但是——除了忽略没有注释的行——它还会打印出根本不使用的代码行ANGLE(例如DELTA行)。这是因为这些行的注释(即 )中恰好也有一个号()。'AREN'T

我想通过管道输出来删除我不想要的行:

但不幸的是,它也删除了我希望恰好ANGLE在他们的评论中有“”的代码行。

如何让 grep 匹配涉及的实际代码ANGLE行并忽略那些在注释中匹配的行?

0 投票
3 回答
720 浏览

regex - 匹配引用全局变量的方法

这个问题与这个问题密切相关,但它与抓取包含对全局变量的引用(未注释掉)的方法有关。

我正在使用以下正则表达式和测试字符串来检查它是否有效,但它只是部分有效:

正则表达式

(我需要以这种方式与捕获组一起使用正则表达式的一部分,以便我可以获取方法的名称作为子匹配)。

测试字符串

使用http://www.regexpal.com/,我可以突出显示引用全局变量的第一个方法。但是,正则表达式并没有像我期望的那样使用其他方法。正则表达式还会选择其他没有引用特定全局变量的方法,并以最后一个实际使用全局变量的方法结束。我已经确定问题在于该[\s\S]+?(GLOBAL_VARIABLE_1)[\s\S]+?End\s+(?:Function|Sub)$部分正在进行最小/非贪婪匹配,以便它继续查找直到找到实际匹配。

总之,表达式应遵循以下规则:

  • 当它看到方法声明的第一端时停止扫描它当前正在检查的方法。在这个例子中,应该只匹配doThisandalsoDoThis方法GLOBAL_VARIABLE_1,但我不确定正则表达式应该是什么。
  • 正则表达式也应该只匹配实际使用全局变量的方法
  • 如果 aGLOBAL_VARIABLE_1被注释掉,那么它实际上并没有被该方法使用。注释GLOBAL_VARIABLE_1不应触发该方法的正匹配。
0 投票
1 回答
153 浏览

regex - 正则表达式:如何匹配最少字符(非贪婪)但不少于 N

我想要这样一个方法 minimumMatch(String input, String regExp, int n)
input 是输入文本, regExp 是正则表达式, n 是结果具有的最少字符数。
返回值是与正则表达式匹配的输入文本的头部,并且至少包含 n 个字符。

例如
leastMatch("abababab", "(ab)+", 3) //returns "abab"
leastMatch("abababab", "(ab)+", 0) //returns ""
leastMatch("abababab", "(ab)+", 4) //returns "abab"

0 投票
1 回答
81 浏览

python - 如何正确处理 python 正则表达式中的贪婪和可选模式

我有一个包含路径的变量,我想从路径中提取第 6 个文件夹,但第 7 个文件夹可能会出现也可能不会出现。在这两种情况下......正则表达式应返回“三”,但第一个示例无法匹配。我试过用?表示可选,但我的尝试不正确。

我需要在正则表达式中更改什么以使其在两种情况下都匹配:

0 投票
2 回答
99 浏览

regex - 使用 Perl 正则表达式保持 TRUE 非贪婪匹配

从以下单词“tacacatac”中,我想匹配“cat”。似乎正则表达式 c.*?t 应该给我这个,但我猜它从第一次出现“c”开始,然后从那里找到下一个“t”,因此匹配“cacat”。

有没有办法(可能使用负前瞻)在最后一个 t 之前从 c 开始查找?

------编辑----- 如果您用字符串替换字母,我需要一个可以工作的选项

谢谢。

0 投票
1 回答
70 浏览

java - 与 java 正则表达式意外匹配

我想在文本中找到 x 类型的 xml 标签

  • 为空(仅包含空格)
  • 可能有也可能没有属性

也是这样的

我将以下正则表达式与 Matcher 查找函数结合使用。

我得到了我没想到的比赛。请参阅以下测试用例

测试失败。相反,这是真的

find 函数是否不支持非贪婪运算符或这里出了什么问题?

PS 我知道有很多不同的方法来处理 xml 数据。但这不是重点。

0 投票
2 回答
1301 浏览

java - Java拆分正则表达式非贪婪匹配不起作用

为什么非贪婪匹配对我不起作用?举个例子:

在我看来,结果应该是:abc|s:0:\"gef\";s:2但它是:abc|s