java - 如何替换所有以特定字符开头和结尾的子串?

时间:2012-10-16 14:38:10

标签: java regex

我有一个像

这样的字符串
  

“棕色狐狸@跳过@fence @”

,我希望将'@'之间的所有子字符串替换为“kicked”,即最终输出应为:

  “棕色的狐狸踢了踢”

我写了以下内容,但无法弄清楚错误:

string.replaceAll("^@.*@$", "kicked");

1 个答案:

答案 0 :(得分:8)

您不应该使用锚元素^$。它们表示整个输入的开始和结束,而不是单词的开头和结尾。您还应将点.替换为[^@](意为“@以外的任何内容”),以使您的表达更有效。

string.replaceAll("@[^@]*@", "kicked");

如果您想避免替换单词中的标记元素,例如如果您想保留he@ll@o,而不是hekikkedo,则可以在表达式的两端添加单词边界标记\b

string.replaceAll("\\b@[^@]*@\\b", "kicked");