gpt4 book ai didi

regex - 贪心 block ()* 包含通配符

转载 作者:行者123 更新时间:2023-12-01 10:00:50 28 4
gpt4 key购买 nike

我正在 ANTLR4 中构建语法,但收到此警告

TL4.g4:224:12: greedy block ()* contains wildcard;非贪婪语法 ()*?可能是首选

这是它引用的代码行

block
: ( statement | functionDecl )* (Return expression ';')?
;

警告是什么意思,我该如何纠正?

最佳答案

警告告诉您 block ()* 是贪婪的,这意味着它会尝试匹配 statementfunctionDec1 的最大出现次数> 根据具体情况,这可能不是您所期望的。

将其更改为 ()*? 使其成为非贪婪的,如警告所建议的那样。这意味着它将匹配最少出现的 statementfunctionDec1

带字符串的表达式示例:

示例:

foofoobar
foobarbar
foofoobarbarbar

表达:

(foo|bar)*bar

将给出结果:

foofoobar
foobarbar
foofoobarbarbar

表达:

(foo|bar)*?bar

将给出结果:

foofoobar
foobar
foofoobar

对于最后一个,结果会停在第一个bar

关于regex - 贪心 block ()* 包含通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16549136/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com