gpt4 book ai didi

java - 使用 java.util.regex.Matcher 时发生 StackOverflowError

转载 作者:行者123 更新时间:2023-11-30 09:56:25 25 4
gpt4 key购买 nike

我尝试通过正则表达式捕捉文本。我列出代码如下。

Pattern p=Pattern.compile("<@a>(?:.|\\s)+?</@a>"); 
Matcher m = p.matcher(fileContents.toString());
while(m.find()) {
//Error will be thrown at this point
System.out.println(m.group());
}

如果我想要捕获的文本长度太长,系统会抛出一个 StackOverflowError。 否则,代码运行良好。 请帮我解决这个问题。

最佳答案

点和\s两者都匹配空白字符。这可能会导致不必要的回溯。您想匹配什么?可能是任何字符,包括换行符?

然后只需使用启用了 dot-matches-newlines 选项的惰性点:

Pattern p=Pattern.compile("<@a>.+?</@a>", Pattern.DOTALL);

你知道如果<@a>你会遇到麻烦标签可以嵌套在您的输入中吗?

关于java - 使用 java.util.regex.Matcher 时发生 StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2370029/

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