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

regex - 用于提取 qmake 变量的正则表达式

我正在尝试编写QRegExp用于从 qmake 项目代码(* .pro 文件)中提取变量名的代码。
变量使用的语法有两种形式:

  • $$VAR
  • $${VAR}

所以,我的正则表达式必须处理这两种情况。我正在尝试以这种方式编写表达式:

但它没有按预期工作:对于字符串$$VAR我有$$V匹配,禁用“贪婪”匹配模式(QRegExp::setMinimal (true))。据我了解,在我的情况下,灰色模式可能会导致错误的结果。
那么,我做错了什么?
或者也许我应该使用贪婪模式而不关心这种行为:)

PS 变量名称不能包含空格和其他“特殊”符号,只能包含字母。

0 投票
1 回答
129 浏览

python - python中的正则表达式匹配无法正常工作 - 重叠匹配?

我正在试验 for regex lazy matches。当我尝试这个时:

它按预期工作,并给出了可能的三个匹配,但是当我尝试这个时:

我只得到一个输出,但我应该得到101 and 11,为什么11不匹配。我的regex '1.*?1'查找1后跟零个或多个任何东西,然后又是一个1

0 投票
1 回答
486 浏览

regex - 正则表达式非贪婪匹配

我需要一个匹配“$”和“|$”之间最短字符串的正则表达式

示例测试字符串:

正则表达式:

我明白了

但我需要bla bla

有谁知道如何做到这一点?

0 投票
2 回答
873 浏览

regex - 即使编辑器不支持非贪婪匹配,如何在正则表达式替换中进行最小匹配

我使用正则表达式搜索来替换以下字符串:

我用正则表达式替换 \new{(.*)} 来查找和 \1 替换。

但是搜索总是匹配我原始字符串的整行,并且替换 reuslt 是:

远非我所需要的。

在 Java 的正则表达式中,您可以使用 ? 在量词之后使它成为不情愿的量词。然后它试图找到最小的匹配。所以在java中,我的搜索正则表达式将是

我需要 TeXStudio 中相应的正则表达式搜索字符串来进行最小匹配。无论如何,即使 TexStudio 不支持非贪婪匹配,仍然可以解决这种情况?

0 投票
3 回答
33 浏览

php - 如何匹配重复并包含包括新行在内的任何内容的短代码

我正在尝试通过 preg_replace_callback 函数处理类似 shrotcode 的内容:

主题($content)例如是这样的:

我遇到了一个问题:

函数 preg_replace_callback 匹配整个主题(从 BLOCK 到最后一个 /BLOCK)而不是 /BLOCK 的第一次出现。我想从简码的内部内容中排除字符串 BLOCK ((?:(?!BLOCK).)*) 来解决它,但它不适用于其他字符,如换行符等。

你可以在这里看到我的尝试:http ://rubular.com/r/0AqadXVdON

感谢您的建议,抱歉英语不好。

0 投票
2 回答
74 浏览

vim - vim 非贪婪的意外行为

我正在使用 vim(7.3 版)。

在下一行

1xAxBx4

where AandB可以是任何字母数字字符,我想替换xBx4foo. 我尝试了以下替换命令

:s/x.\{-}x4/foo/

并得到1foo而不是我所期望的(1xAfoo)。1xAfoo如果我使用这个替换命令,我可以得到

:s/x[^A]x4/foo/

但这太具体了,如果我想在多行上替换它不会有帮助,因为“A”可能是每一行的不同字符。

为什么会有意外的行为\.{-}?或者这正是人们所期望的,但我只是误解了语法?

0 投票
5 回答
963 浏览

regex - sed 正则表达式匹配第一次出现

我有以下字符串:

我正在尝试匹配这部分:“Microsoft Office für Mac 2011 14.4.1-Update”使用以下 sed 命令:s/^.*Microsoft Office f.r Mac 2011 \([^ ]*\)-Update.*$/\1/ 不幸的是输出是 14.3.7(所以最后一次出现)如何在第一次出现后停止,考虑到使用*?非贪婪匹配没有帮助?

0 投票
5 回答
8604 浏览

regex - Extract data between square brackets "[]" using Perl

I was using a regex for extracting data from curved brackets (or "parentheses") like extracting a,b from (a,b) as shown below. I have a file in which every line will be like

I'm using the following string to extract a1,b1, a2,b2, etc...

However, if I want to extract the data from square brackets [], how can I do it? For example

I need to extract/match only the data in square brackets and not the curved brackets.

0 投票
3 回答
138 浏览

php - PHP PCRE 正则表达式

在 LaTeX 中,表达式\o{a}{b}意味着运算符 'o' 有两个参数 a 和 b。LaTeX 也接受\o{a},并且在这种情况下将第二个参数视为空字符串。

现在我尝试将正则表达式\\\\o\{([\s\S]*?)\}\{([\s\S]*?)\}与字符串匹配\o{a}\o{a}{b}。当它不是匹配时,它会将整个字符串误认为是匹配的。(对这个字符串的正确解释是子字符串\o{a}{b}是唯一的匹配项。)关键是我需要知道如何告诉 PHP 识别如果在第一个 } 之后有除 { 之外的其他内容,那么它不是匹配项。

我该怎么做?

编辑:运算符的参数允许包含符号\{}。但在这种情况下,整个字符串不匹配的原因是因为大括号中的大括号a}\o{a不符合 LaTeX 规则(例如{必须在 之前}),因此a}\o{a不能作为运算符的参数......

Edit2:另一方面,\o{{a}}{b}应该是一个匹配,因为{a}它是一个有效的参数。

0 投票
2 回答
177 浏览

python - Python 非贪婪正则表达式的行为

我正在使用 python 3.4.1 版本,但我不明白以下正则表达式的结果:

我希望结果是

但显然是第二个。*?“吃掉”所有字符,直到最后的“}]”。我希望停在第一个 '}" 字符处。

如果我省略了 '[' 和 ']' 字符,则行为如我所料: