我有一个像
这样的字符串“棕色狐狸@跳过@fence @”
,我希望将'@'
之间的所有子字符串替换为“kicked
”,即最终输出应为:
“棕色的狐狸踢了踢”
我写了以下内容,但无法弄清楚错误:
string.replaceAll("^@.*@$", "kicked");
答案 0 :(得分:8)
您不应该使用锚元素^
和$
。它们表示整个输入的开始和结束,而不是单词的开头和结尾。您还应将点.
替换为[^@]
(意为“@
以外的任何内容”),以使您的表达更有效。
string.replaceAll("@[^@]*@", "kicked");
如果您想避免替换单词中的标记元素,例如如果您想保留he@ll@o
,而不是hekikkedo
,则可以在表达式的两端添加单词边界标记\b
:
string.replaceAll("\\b@[^@]*@\\b", "kicked");