正则表达式除了第一个

Dan*_*leO 3 java regex

嗨我有字符串,可能是这样的:

%a%%%%%bc%%%d%
Run Code Online (Sandbox Code Playgroud)

我需要在字符串的开头和结尾用""替换第一个%和最后一个%.此外,我需要为每个字符串序列组替换除第一个之外的所有%+.

结果应该是这样的:

a%bc%d
Run Code Online (Sandbox Code Playgroud)

我怎么能用正则表达式?我试过这样的事情:.*?%(\W+)%但是没有用

谢谢.

Wik*_*żew 7

你可以用

.replaceAll("^%|%$|(%)+", "$1")
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

细节:

  • ^%- %匹配字符串的开头
  • | - 要么
  • %$- %字符串末端的a
  • | - 要么
  • (%)+- 重复捕获组匹配1+个%符号,但%每次迭代时只捕获一个到组1中,之后,$1对该组的反向引用将多个%字符替换为1 %.