我使用java的Pattern.matches来匹配一个数据块到正则表达式。数据块可以是单行或多行。问题是,一旦我的数据超过15行(通常超过17-18行),我开始越来越stackoverflowerror。对于少于15行的数据,正则表达式工作正常。Pattern.matches()给StackOverflowError
在正则表达式的格式如下:
域名 - >空间 - > - >空间 - >数 - >空间 - > - >空间 - >数 - >换行
String regex = "^(([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+([a-zA-Z]{2,})\\s*,\\s*\\d+\\s*,\\s*\\d+(\\r?\\n)?)+$";
数据块i使用测试针对此正则表达式是本
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
+1实际上在野外遇到这个同名的错误。 :) – Xion
提示1)你不必在这里转义'-':'[a-zA-Z0-9 \\ - ]'(即:'a-zA-Z-]')2)在那里在使用'.matches()'时,无需使用'^'和'$'' – NullUserException
您是否需要组或非捕获组?如果是这样,替换'('用'(?:'。 – Thomas