我认为我在Java中使用Regex匹配字符串有一个不错的句柄,但现在我正在尝试使用Regex而不是取得太大成功来替换字符串.
简单地说,我试图找到一个数字后面紧跟一个常量字符串"CMR",然后在数字和"CMR"子字符串之间添加一个空格." 0CMR"应该变为"0 CMR", "5CMR""5 CMR"等.任何前面的非数字都应保持原样.
所以我的源字符串是" theStringThat0CMRhas"
我的命令是:
replaceAll("[0-9]CMR", "[0-9] CMR");
Run Code Online (Sandbox Code Playgroud)
我在结果中获得了额外的空间,但结果变成了" theStringThat[0-9] CMRhas",这显然不是我需要的.不知怎的,我需要告诉正则表达式不要用"[0-9]"替换,而是首先用它匹配的任何东西.
我知道我做错了,但我不知道什么是对的.
任何帮助赞赏.
谢谢,
汤姆
shm*_*sel 10
您想使用捕获组:
replaceAll("([0-9])CMR", "$1 CMR")
Run Code Online (Sandbox Code Playgroud)
$1 引用匹配中的第一个组,用括号表示.
另外,[0-9]可以替代\d.