我有一个字符串
"棕色的狐狸@跳过@围栏@"
,我希望'@'用' kicked' 替换两个之间的所有子串,即最终输出应该是:
"棕色的狐狸被踢了踢"
我写了以下但无法弄清楚错误:
string.replaceAll("^@.*@$", "kicked");
Run Code Online (Sandbox Code Playgroud)
你不应该使用锚元素^和$.它们表示整个输入的开始和结束,而不是单词的开头和结尾.你还应该.用[^@](用"除了"之外的任何东西@)代替点来使你的表达更有效率.
string.replaceAll("@[^@]*@", "kicked");
Run Code Online (Sandbox Code Playgroud)
如果你想避免替换单词中的标记元素,例如,如果你想保留he@ll@o原样,而不是制作它hekikkedo,你可以在\b表达式的两端放入单词边界的标记:
string.replaceAll("\\b@[^@]*@\\b", "kicked");
Run Code Online (Sandbox Code Playgroud)