Apache REgex因stackOverflowError而失败

时间:2016-10-10 16:48:06

标签: java regex apache

我注意到在 StackOverflowError 的1400字符长的字符串上运行(^.*\n?)正则表达式失败了,我想知道是什么原因以及是否有人可以指出字符串长度限制。

由于

1 个答案:

答案 0 :(得分:0)

奇怪的是,Java中的以下代码不会产生10 ^ 5个字符的问题。 正则表达式对我来说似乎并不奇怪。盖伊,你能给我们更多关于你想要完成的事情的背景吗?

    package stackOverflowJava;

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    public class interactiveProg1 {

        public static void main(String[] args) {
            Pattern p = Pattern.compile("(^.*\n?)");
            StringBuffer subject = new StringBuffer();
            for (int i = 0; i < 99999; i++) {
                subject.append("a");
            }
            System.out.println("Subject        : " + subject);
            Matcher m = p.matcher(subject.toString());
            boolean b = m.matches();
            System.out.println("Pattern matches: " + b);
        }

    }

Subject        : aaaaaaaaaaaa...
Pattern matches: true