问题标签 [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.
regex - 用于提取 qmake 变量的正则表达式
我正在尝试编写QRegExp
用于从 qmake 项目代码(* .pro 文件)中提取变量名的代码。
变量使用的语法有两种形式:
- $$VAR
- $${VAR}
所以,我的正则表达式必须处理这两种情况。我正在尝试以这种方式编写表达式:
但它没有按预期工作:对于字符串$$VAR
我有$$V
匹配,禁用“贪婪”匹配模式(QRegExp::setMinimal (true)
)。据我了解,在我的情况下,灰色模式可能会导致错误的结果。
那么,我做错了什么?
或者也许我应该使用贪婪模式而不关心这种行为:)
PS 变量名称不能包含空格和其他“特殊”符号,只能包含字母。
python - python中的正则表达式匹配无法正常工作 - 重叠匹配?
我正在试验 for regex lazy matches
。当我尝试这个时:
它按预期工作,并给出了可能的三个匹配,但是当我尝试这个时:
我只得到一个输出,但我应该得到101 and 11
,为什么11
不匹配。我的regex '1.*?1'
查找1
后跟零个或多个任何东西,然后又是一个1
。
regex - 正则表达式非贪婪匹配
我需要一个匹配“$”和“|$”之间最短字符串的正则表达式
示例测试字符串:
正则表达式:
我明白了
但我需要bla bla
有谁知道如何做到这一点?
regex - 即使编辑器不支持非贪婪匹配,如何在正则表达式替换中进行最小匹配
我使用正则表达式搜索来替换以下字符串:
和
我用正则表达式替换 \new{(.*)} 来查找和 \1 替换。
但是搜索总是匹配我原始字符串的整行,并且替换 reuslt 是:
远非我所需要的。
在 Java 的正则表达式中,您可以使用 ? 在量词之后使它成为不情愿的量词。然后它试图找到最小的匹配。所以在java中,我的搜索正则表达式将是
我需要 TeXStudio 中相应的正则表达式搜索字符串来进行最小匹配。无论如何,即使 TexStudio 不支持非贪婪匹配,仍然可以解决这种情况?
php - 如何匹配重复并包含包括新行在内的任何内容的短代码
我正在尝试通过 preg_replace_callback 函数处理类似 shrotcode 的内容:
主题($content)例如是这样的:
我遇到了一个问题:
函数 preg_replace_callback 匹配整个主题(从 BLOCK 到最后一个 /BLOCK)而不是 /BLOCK 的第一次出现。我想从简码的内部内容中排除字符串 BLOCK ((?:(?!BLOCK).)*) 来解决它,但它不适用于其他字符,如换行符等。
你可以在这里看到我的尝试:http ://rubular.com/r/0AqadXVdON
感谢您的建议,抱歉英语不好。
vim - vim 非贪婪的意外行为
我正在使用 vim(7.3 版)。
在下一行
1xAxBx4
where A
andB
可以是任何字母数字字符,我想替换xBx4
为foo
. 我尝试了以下替换命令
:s/x.\{-}x4/foo/
并得到1foo
而不是我所期望的(1xAfoo
)。1xAfoo
如果我使用这个替换命令,我可以得到
:s/x[^A]x4/foo/
但这太具体了,如果我想在多行上替换它不会有帮助,因为“A”可能是每一行的不同字符。
为什么会有意外的行为\.{-}
?或者这正是人们所期望的,但我只是误解了语法?
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(所以最后一次出现)如何在第一次出现后停止,考虑到使用*?
非贪婪匹配没有帮助?
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.
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}
它是一个有效的参数。
python - Python 非贪婪正则表达式的行为
我正在使用 python 3.4.1 版本,但我不明白以下正则表达式的结果:
我希望结果是
但显然是第二个。*?“吃掉”所有字符,直到最后的“}]”。我希望停在第一个 '}" 字符处。
如果我省略了 '[' 和 ']' 字符,则行为如我所料: