请解释为什么在这个表达式中,替换只在字符串的末尾发生一次.
"1 \n3 \n5 ".replaceAll(" +$", "x") // => "1 \n3 \n5x"
Run Code Online (Sandbox Code Playgroud)
根据Java 7文档for Pattern,
$应该匹配一行\z的结尾,并匹配输入的结尾(字符串).
我的目标是替换字符串中每行末尾的尾随空格.该"x"更换仅仅是一种方式来更好地显示被替换的东西.
我认为正则表达式和String.replaceAll应该能够做到这一点.如果replaceAll无法执行此操作,请提供简明的替代方案.
hwn*_*wnd 10
要替换每行的尾随空格,您需要使用(?m)(多行)修饰符.
"1 \n3 \n5 ".replaceAll("(?m) +$", "x") //=> "1x\n3x\n5x"
Run Code Online (Sandbox Code Playgroud)
注意:此修改器使得^和$比赛在每一行的开始和结束.