Java 尝试将大字符串与正则表达式匹配时发生StackOverflow错误

Java 尝试将大字符串与正则表达式匹配时发生StackOverflow错误,java,regex,string,stack-overflow,Java,Regex,String,Stack Overflow,我有一个包含自然数的字符串,它们之间有任何模式,如(,-)或(,)。 在while条件下,我确保给定的字符串包含的数字与给定的窗口大小一样少,例如5 情况如下: while(discretizedTs.substring(lagWindowStart).matches("(-?,?\\d+,){5,}")) { } 其中LagWindowsStart跳转到下一个数字或(-)模式的索引。 对于小字符串,这个正则表达式工作得很好(据测试)。 我的问题是,对于大字符串(我必须正常处理非常大的字符串)

我有一个包含自然数的字符串,它们之间有任何模式,如(,-)或(,)。 在while条件下,我确保给定的字符串包含的数字与给定的窗口大小一样少,例如5

情况如下:

while(discretizedTs.substring(lagWindowStart).matches("(-?,?\\d+,){5,}")) {
}
其中LagWindowsStart跳转到下一个数字或(-)模式的索引。 对于小字符串,这个正则表达式工作得很好(据测试)。 我的问题是,对于大字符串(我必须正常处理非常大的字符串),这个正则表达式导致了一个SOF。 例如,如果字符串包含超过17k个字符,就会发生这种情况

要匹配的字符串长度是否有限制?或者必须完成匹配的时间限制? 如果没有正则表达式,我不知道如何解决给定的问题。 我希望你有什么想法

多谢各位
最佳

默认JVM堆栈大小相当小。您可以使用-Xss选项增加它,例如-Xss1024k,应该会有所帮助。

语言是什么?看起来像Java?(如果你多发一点代码会有帮助)。如果输入包含空格,您可以按空格分割输入,也可以按
[^-,\d]+
分割输入,因为正则表达式与其余字符无关。您不能只编写一个循环吗?是的,它是java。我不知道要发布的代码的其他部分。。这些字符串看起来像“1,1,3,4,3,-,4,5,4,3,4,-,43,4,4,6,-”等等。。我滑动一个窗口抛出它,必须小心,字符串包含最小n个数字。其中n是窗口大小。外部(错误抛出)while-condition检查如果(第一次迭代)“10,1,3,4,3,-,4,5,4,3,4,-,4,4,-,43,4,4,-,43,4,43,4,-,43,4,4,43,4,-,43,4,4,4,-,43,4,4,-,43,4,4,43,4,4,43,4,4,4,-43,4,4,4,4,-”包含至少n个数字,等等(,#,4,4,4,4,4,4,4,4,4,4,4,4,4,-,这里是一个数字)问题是内部while lokk循环类似于
while+lag_leadWindowsSize+“}”)==false){do smthg;}
但这也会匹配数字小于WindowsSize的单词。。很抱歉忘了说外部循环必须检查字符串是否包含两倍于windowsize的数字。如果窗口大小为5,则外部循环的最小值为10。所以我需要两个循环。。。很难解释……谢谢。我解决了这个问题,通过在循环中检查字符串之前是否有足够的数字,将每个数字的数字添加到临时字符串中,这样我就不会处理整个字符串。这有助于{n}量词代替{n,}