gpt4 book ai didi

java - 正则表达式抛出 StackOverFlow 错误

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

我有一个简单的正则表达式问题。我有以下多行字符串:

description: line1\r\nline2\r\n...

我正在尝试查找 description: 之后的所有行。我使用了以下正则表达式(以及更多):

description: ((.*\r\n){1,})

...没有任何成功。然后我发现Sun中有一个“Regexp StackOverflow”错误(声明为不会修复),请参阅Bug #5050507 。谁能给我提供克服这个恼人错误的神奇公式吗?请注意,行的总长度必须超过 818 字节!!

最佳答案

由于您要匹配文本描述之外的任何内容,因此您只需允许点与Pattern.DOTALL匹配换行符即可:

description:\s(.*)

所以,在 Java 中:

Pattern regex = Pattern.compile("description:\\s(.*)", Pattern.DOTALL);
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
ResultString = regexMatcher.group(1);
}

与正则表达式的唯一语义差异(除了它不会破坏堆栈的事实之外)是,如果 description: 之后的任何内容不包含换行符,它也会匹配。另外,你的正则表达式不会匹配文件的最后一行,除非它以换行符结尾,我的会如此。哪种行为更可取是您的决定。

当然,您的功能可以像这样模拟:

description:\s(.*\r\n)

但我怀疑这真的是你想要的。或者是吗?

关于java - 正则表达式抛出 StackOverFlow 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3746727/

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