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

谢谢

最佳答案

奇怪的是,下面的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

关于java - Apache REgex失败,并显示stackOverflowError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39963045/

10-14 10:57