gpt4 book ai didi

java - 为什么正则表达式得到 stackOverFlow

转载 作者:行者123 更新时间:2023-12-01 21:16:15 27 4
gpt4 key购买 nike

当我尝试使用 scala lib(使用 re2)匹配上述正则表达式时,代码进入以下路径并超时 1 分钟:

正则表达式:

(([a-z0-9!#$%&'*+?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])))

堆栈跟踪:

at java.util.regex.Pattern$CharProperty.match(Pattern.java:3693)
at java.util.regex.Pattern$Curly.match(Pattern.java:4125)
at java.util.regex.Pattern$CharProperty.match(Pattern.java:3694)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556)
at java.util.regex.Pattern$Loop.match(Pattern.java:4683)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4615)
at java.util.regex.Pattern$Curly.match0(Pattern.java:4170)
at java.util.regex.Pattern$Curly.match(Pattern.java:4132)
at java.util.regex.Pattern$CharProperty.match(Pattern.java:3694)

我不确定它是否无限循环,因为它可能会在长时间持续后工作。我需要帮助理解这个表达式中到底是什么导致了这种情况的发生以及如何改进这个表达式。

最佳答案

您的正则表达式具有嵌套量词(例如 (a+)*)。这个works well with re2但是not with most other regular expression engines .

关于java - 为什么正则表达式得到 stackOverFlow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40027740/

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