我需要正则表达式来替换除字符串中的第一个匹配字符以外的所有匹配字符。
例如;
与'A'匹配并替换为'B'
'AAA'应替换为'ABB'
'AAA AAA'应替换为'ABB ABB'
与''匹配并替换为'X'
答案 0 :(得分:5)
您需要使用此正则表达式进行替换:
\\BA
\B
(在单词字符之间)断言\b
(字边界)不匹配的位置A
字面匹配字符A
Java代码:
String repl = input.replaceAll("\\BA", "B");
更新对于问题的第二部分,请使用此正则表达式进行替换:
"(?<!^|\\w) "
<强>代码:强>
String repl = input.replaceAll("(?<!^|\\w) ", "X");
答案 1 :(得分:4)
负面观察和字符串锚定的开始
像这样使用正则表达式(?<!^| )A
:
String resultString = subjectString.replaceAll("(?<!^| )A", "B");
在the demo中,检查底部的替换。
<强>解释强>
(?<!^| )
断言位置前面的内容既不是字符串的开头也不是空格字符A
匹配A
<强>参考强>