gpt4 book ai didi

java - 在java模式匹配中替换而不是附加?

转载 作者:行者123 更新时间:2023-12-01 13:19:48 25 4
gpt4 key购买 nike

目前,此代码在找到匹配的每一行后将模式匹配附加到字符串缓冲区。但是,我想进行模式匹配并替换 2 个不同的模式,并且该程序正在打印找到这两个模式的行的重复项,因为它会附加找到模式匹配的每一行。有没有办法只打印出最后一行的替换内容?我想我可能必须将第一个模式匹配器中的附加更改为替换,但我不知道有任何方法可以做到这一点。

public static void main(String[] args) throws FileNotFoundException {
RealReadFile file = new RealReadFile();
while (!file.endOfFile()) {
String line = file.nextLine();
Pattern cpochhammer = Pattern.compile("(\\(([^)]+)\\)_\\{([^}]+)\\})");
Matcher pochhammer = cpochhammer.matcher(line);
StringBuffer rplcmntBfr = new StringBuffer();
while(pochhammer.find()) {
pochhammer.appendReplacement(rplcmntBfr, "\\\\pochhammer{$2}{$3}");
}
pochhammer.appendTail(rplcmntBfr);
Pattern npochhammer = Pattern.compile("(\\(([^)]+)\\)_(.))");
Matcher ppochhammer = npochhammer.matcher(rplcmntBfr);
while(ppochhammer.find()) {
ppochhammer.appendReplacement(rplcmntBfr, "\\\\pochhammer{$2}{$3}");
}
//ppochhammer.appendTail(rplcmntBfr);

System.out.println(rplcmntBfr);
}
}

最佳答案

一旦将rplcmntBfr设置到第一个和第二个替换循环之间的匹配器中,您必须使用以下命令清除缓冲区

rplcmntBfr.setLength(0);

否则,当您在第二个循环中正确替换 rplcmntBfr 的值时,其结果会附加到第一次替换的结果中,这是不正确的。下一次替换的结果需要替换rplcmntBfr的内容。

关于java - 在java模式匹配中替换而不是附加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22138158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com