我认为我在Java中使用正则表达式可以很好地处理字符串匹配的问题,但是现在我尝试使用Regex
替换字符串,但效果不佳。
简而言之,我试图找到立即有数字后跟常量字符串“ CMR”的位置,然后在数字和“ CMR”子字符串之间添加一个空格。 “ 0CMR
”应变为"0 CMR", "5CMR"
应变为“ 5 CMR”,依此类推。任何前面的非数字应保留原样。
所以我的源字符串是“ theStringThat0CMRhas
”
我的命令是:
replaceAll("[0-9]CMR", "[0-9] CMR");
我在结果中获得了额外的空间,但是结果变成了“
theStringThat[0-9] CMRhas
”,这显然不是我所需要的。我需要以某种方式告诉正则表达式不要用“ [0-9]”代替,而要用任何与之匹配的东西代替。我知道我做错了,但是我不知道什么是对的。
任何帮助表示赞赏。
谢谢,
汤姆
最佳答案
您要使用capturing group:
replaceAll("([0-9])CMR", "$1 CMR")
$1
引用比赛中的第一组,并用括号表示。另外,
[0-9]
可以用\d
代替。