System.out.println("R.A.F. stands for R.A.F. blablabla".replaceAll(
"\\bR\\.A\\.F\\.\\b", "royal airforce army"));
我想用“皇家空军”代替弦中的第二个R.A.F,为什么它不起作用?
答案 0 :(得分:0)
字边界匹配任何点:
由于.
不是单词字符,因此模式\.\b
只匹配后跟单词字符的.
,即它将匹配R.A.F.foo
,但不是R.A.F. foo
。
如果你想确保它与紧跟一个单词字符的R.A.F.
不匹配,请改用:
"\\bR\\.A\\.F\\.(?!\\w)"
但是这将替换示例输入中的两个实例,因为第一个R.A.F
前面是字符串的开头。如果你只想替换第二个,我建议使用这样的东西:
"(?<=\\W)R\\.A\\.F\\.(?!\\w)"
答案 1 :(得分:0)
我会尝试:
System.out.println("R.A.F. stands for R.A.F. blablabla".replaceAll(
"\\sR\\.A\\.F\\.", " royal airforce army"));
<强>输出:强>
R.A.F. stands for royal airforce army blablabla
<强> PS:强> 注意我在“皇家空军部队”之前增加了一个空间。