Java 用于替换字符串中除一个字符外的所有字符的正则表达式

Java 用于替换字符串中除一个字符外的所有字符的正则表达式,java,regex,Java,Regex,我需要正则表达式来替换所有匹配的字符,除了字符串中的第一个字符 比如, 用于与“A”匹配并替换为“B” “AAA”应替换为“ABB” “AAA”应替换为“ABB” 用于与“”匹配并替换为“X” “[space][space][space]A[space][space][space]”应替换为“[space]XXA[space]XX” 负回溯和字符串锚点的开头 使用regex(?如下所示: String resultString = subjectString.replaceAll("(?&

我需要正则表达式来替换所有匹配的字符,除了字符串中的第一个字符

比如,

用于与“A”匹配并替换为“B”

  • “AAA”应替换为“ABB”

  • “AAA”应替换为“ABB”

用于与“”匹配并替换为“X”

  • “[space][space][space]A[space][space][space]”应替换为“[space]XXA[space]XX”

负回溯和字符串锚点的开头

使用regex
(?如下所示:

String resultString = subjectString.replaceAll("(?<!^| )A", "B");

String resultString=subjectString.replaceAll((?您需要使用此正则表达式进行替换:

\\BA
"(?<!^|\\w) "
  • \B
    (单词字符之间)断言
    \B
    (单词边界)不匹配的位置
  • A
    按字面意思匹配字符
    A
Java代码:

String repl = input.replaceAll("\\BA", "B");
String repl = input.replaceAll("(?<!^|\\w) ", "X");

更新对于问题的第二部分,请使用此正则表达式替换:

\\BA
"(?<!^|\\w) "

”(?字符串的第一个字符,或第一个匹配字符?@jcaron Yes序列中的第一个匹配字符fyi,添加了解释和演示。:)我编辑了正则表达式,演示和解释,Ammar,请看一看。:@AvinashRaj谢谢!:)@AvinashRaj Yes,那也行。但我真的很想把lookbehinds视为“一个真实的人”,你知道我的意思吗?给它一些肉,就像我们之前的这个C#regex。阿马尔,如果你想有更多的规则,例如,它可以在几个空格后发生……你只需不断更改简单的lookback,并在需要时添加OR。例如,
(?如果在第一个
A
(?如果你也不想在
@
之后替换第一个
A
…这是一种非常灵活的方法,你可以继续扩展它。除了空格外,它在大多数情况下都可以正常工作。有什么建议吗?给我一个不起作用的示例值,我会调整它。
'ABC'
应该替换为
”--ABC--“
这似乎是一个全新的要求。你能澄清一下吗?它不适用于一个序列中的多个空格,当空格被替换为其他字符时。实际上,在前面提到的示例中,我在“ABC”之前和之后添加了3个空格,但编辑器用一个空格替换了所有空格。