问题标签 [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.
ruby - 向后搜索时如何使用非贪婪修饰符?
我有一些疑问,例如:
这些查询具有不需要的前缀和后缀。我使用正则表达式来摆脱使用非贪婪的前缀.*?SELECT
。
我找不到使用非贪婪修饰符向后搜索来消除后缀的方法。
理想情况下,我想要一个模式来消除从行尾到“LIMIT”的第一个匹配项。如果我使用LIMIT.*?
它不会匹配任何东西,而如果我只使用LIMIT.*
它是贪婪的,我想避免。
我使用 Ruby 作为我的语言。
这是查询的示例:
这是所需的输出:
regex - 如何捕获重复模式的每一个匹配项?
我有以下正则表达式:
我想捕获以下测试字符串中的所有颜色:
(现在只捕获红色和紫色)
打开此网址并查看匹配的组: http ://www.regex101.com/r/oZ2cH4
我已经阅读了以下http://www.regular-expressions.info/captureall.html但技巧没有奏效
(或者也许我做错了)
我该如何解决这个问题?
先感谢您
.net - 非贪心正则表达式量词给出贪心结果
我有一个 .net 正则表达式,我正在使用 Windows Powershell 进行测试。输出如下:
我的期望是使用?
量词会导致匹配为aaa bbb
,因为第二组 a 足以满足表达式。我对非贪婪量词的理解是有缺陷的,还是我测试不正确?
注意:这与正则表达式 nongreedy is greedy显然不是同一个问题
regex - grep 正则表达式忽略行尾的注释
我试图通过许多旧的 PowerBASIC 源文件搜索变量,但我无法grep
避免在行尾注释中匹配对变量的引用。
例如:
最初我使用的是:
但是——除了忽略没有注释的行——它还会打印出根本不使用的代码行ANGLE
(例如DELTA
行)。这是因为这些行的注释(即 )中恰好也有一个撇号()。'
AREN'T
我想通过管道输出来删除我不想要的行:
但不幸的是,它也删除了我希望恰好ANGLE
在他们的评论中有“”的代码行。
如何让 grep 匹配涉及的实际代码ANGLE
行并忽略那些仅在注释中匹配的行?
regex - 匹配引用全局变量的方法
这个问题与这个问题密切相关,但它与抓取包含对全局变量的引用(未注释掉)的方法有关。
我正在使用以下正则表达式和测试字符串来检查它是否有效,但它只是部分有效:
正则表达式
(我需要以这种方式与捕获组一起使用正则表达式的一部分,以便我可以获取方法的名称作为子匹配)。
测试字符串
使用http://www.regexpal.com/,我可以突出显示引用全局变量的第一个方法。但是,正则表达式并没有像我期望的那样使用其他方法。正则表达式还会选择其他没有引用特定全局变量的方法,并以最后一个实际使用全局变量的方法结束。我已经确定问题在于该[\s\S]+?(GLOBAL_VARIABLE_1)[\s\S]+?End\s+(?:Function|Sub)$
部分正在进行最小/非贪婪匹配,以便它继续查找直到找到实际匹配。
总之,表达式应遵循以下规则:
- 当它看到方法声明的第一端时停止扫描它当前正在检查的方法。在这个例子中,应该只匹配
doThis
andalsoDoThis
方法GLOBAL_VARIABLE_1
,但我不确定正则表达式应该是什么。 - 正则表达式也应该只匹配实际使用全局变量的方法
- 如果 a
GLOBAL_VARIABLE_1
被注释掉,那么它实际上并没有被该方法使用。注释GLOBAL_VARIABLE_1
不应触发该方法的正匹配。
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"
python - 如何正确处理 python 正则表达式中的贪婪和可选模式
我有一个包含路径的变量,我想从路径中提取第 6 个文件夹,但第 7 个文件夹可能会出现也可能不会出现。在这两种情况下......正则表达式应返回“三”,但第一个示例无法匹配。我试过用?表示可选,但我的尝试不正确。
我需要在正则表达式中更改什么以使其在两种情况下都匹配:
regex - 使用 Perl 正则表达式保持 TRUE 非贪婪匹配
从以下单词“tacacatac”中,我想匹配“cat”。似乎正则表达式 c.*?t 应该给我这个,但我猜它从第一次出现“c”开始,然后从那里找到下一个“t”,因此匹配“cacat”。
有没有办法(可能使用负前瞻)在最后一个 t 之前从 c 开始查找?
------编辑----- 如果您用字符串替换字母,我需要一个可以工作的选项
谢谢。
java - 与 java 正则表达式意外匹配
我想在文本中找到 x 类型的 xml 标签
- 为空(仅包含空格)
- 可能有也可能没有属性
也是这样的
我将以下正则表达式与 Matcher 查找函数结合使用。
我得到了我没想到的比赛。请参阅以下测试用例
测试失败。相反,这是真的
find 函数是否不支持非贪婪运算符或这里出了什么问题?
PS 我知道有很多不同的方法来处理 xml 数据。但这不是重点。
java - Java拆分正则表达式非贪婪匹配不起作用
为什么非贪婪匹配对我不起作用?举个例子:
在我看来,结果应该是:abc|s:0:\"gef\";s:2
但它是:abc|s