Pattern.matches() 给出了 StackOverflowError
2022-09-02 22:07:42
我正在使用java的Pattern.matches将数据块与正则表达式进行匹配。数据块可以是单行或多行。问题是,一旦我的数据超过15行(通常超过17-18行),我就开始得到stackoverflowerror。对于少于15行的数据,正则表达式工作正常。
正则表达式的格式如下:
域名 -> 空格 -> , -> 空格 ->号 -> 空格 -> , -> 空格 -> 号 -> 换行符
String regex = "^(([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+([a-zA-Z]{2,})\\s*,\\s*\\d+\\s*,\\s*\\d+(\\r?\\n)?)+$";
我用来测试这个正则表达式的数据块是这个
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
这是代码:
String regex = "^(([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+([a-zA-Z]{2,})\\s*,\\s*\\d+\\s*,\\s*\\d+(\\r?\\n)?)+$";
boolean valid = Pattern.matches(regex, data); //fails here