我正在尝试通过流(Reader)实现正则表达式。我正在使用以下方法:
regex ^(。*)$存在问题(它是用户数据,无法更改)。匹配器没有捕获行结尾,因此matcher.end()返回\ n char之前的最后一个符号而不是\ n本身。然后该程序循环空字符串。例如。我们输入了“ABC \ nCDE”
是否有任何方法可以将EOL字符包含在捕获组中?或者有Java的正则表达式实现与流一起工作?
P.S。有一个解决方案,但它非常难看,我不会实现它:
String text = "ABC\r\nDEF\r\nGHI\r\n";
Pattern pattern = Pattern.compile("^(.*)$", Pattern.MULTILINE);
boolean first = true;
Matcher matcher = pattern.matcher(text);
while (matcher.find(first ? 0 : 1)) {
System.out.println(matcher.group());
text = text.substring(matcher.end() - 1);
matcher.reset(text);
first = false;
}