public static void main(String[] args) {
Pattern p = Pattern.compile("((?:[a-zA-Z]\\.)+[s]$)");
Matcher m = p.matcher("u.s.a. u.s s.w.a.t u.t.");
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, "$0\\#");
}
m.appendTail(sb);
System.out.println(sb.toString());
}
此处的 u.s
应该替换为 u.s#
但它并没有替换它。在我的应用程序中,我需要在任何以 s
或 s.
结尾的首字母缩略词后附加一个 #
。
我应该怎么做?
最佳答案
"((?:[a-zA-Z]\\.)+s\\.?(?=\\s|$))"
您需要使用它并使用 find
而不是 matches
因为 matches
断言整个字符串与正则表达式匹配。 $
是字符串的结尾,因此请改用先行。
关于java - 未使用 appendReplacement 替换模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32362261/