gpt4 book ai didi

regex - 为什么Dart(不)匹配此RegEx?

转载 作者:行者123 更新时间:2023-12-03 03:13:29 26 4
gpt4 key购买 nike

我有一些代码:

void main() {
RegExp re = new RegExp(r".*(a+)+\d");
print("a0aaaaaaaaaaaaa".contains(re));
print("a0aaaaaaaaaaaaaa".contains(re));
}

输出:
true
false

为什么?我希望两者都是对的。

编辑:
我提交了一个错误报告:
https://code.google.com/p/dart/issues/detail?id=19193

最佳答案

该行为绝对是一个错误。

在JS RegExp实现中,这可能是常见的故意错误。如果RegExp运行时间“太长”,则某些实现会放弃并声称不匹配。

我猜(因为我还没有检查过),是因为RegExp花费的时间太长而无法完成VM的RegExp实现。有问题的RegExp看起来很像将导致灾难性的回溯(占用输入长度的指数时间)。这就可以解释为什么增加长度会导致它突然放弃并说不匹配,即使很明显它应该匹配。

关于regex - 为什么Dart(不)匹配此RegEx?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24027524/

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