我认为我在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代替。

10-08 19:25