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.
结尾的任何首字母缩写词#
。
我该怎么做?
答案 0 :(得分:1)
"((?:[a-zA-Z]\\.)+s\\.?(?=\\s|$))"
你需要使用它并使用find
代替matches
,因为matches
断言整个字符串与正则表达式匹配。 $
是字符串的结尾,所以请改用lookahead。