我需要一个正则表达式来替换字符串中除第一个字符外的所有匹配字符。
例如:
如果使用 'A' 进行匹配并替换为 'B'
'AAA' 应替换为 'ABB'
'AAA AAA' 应替换为 'ABB ABB'
如果使用空格进行匹配并替换为 'X'
- '[空格][空格][空格]A[空格][空格][空格]' 应替换为 '[空格]XXA[空格]XX'
负回溯断言和字符串开头定位符
使用正则表达式(?<!^| )A
,如下:
String resultString = subjectString.replaceAll("(?<!^| )A", "B");
(?<!^| )
断言紧接在该位置之前的内容不是字符串的开头或空格字符A
匹配A
(?<!^|[ ]*)
如果第一个 A
前可以有多个空格,而 (?<!^|[ ]*|[@_])
如果你也不想替换 @
或 _
后面的第一个 A
... 这是一种非常灵活的方法,你可以不断扩展它。 - zx81