java - 在java中用正则表达式替换字符串

标签 java regex

我认为我在 Java 中使用 Regex 匹配字符串方面做得不错,但现在我尝试使用 Regex 替换字符串,但没有取得太大成功。

简单地说,我试图找到一个数字后面紧跟着一个常量字符串“CMR”,然后在数字和“CMR”子字符串之间添加一个空格。 “0CMR”应该变成“0 CMR”,“5CMR”应该变成“5 CMR”,等等。任何前面的非数字都应该保持原样。

所以我的源字符串是“theStringThat0CMRhas

我的命令是:

replaceAll("[0-9]CMR", "[0-9] CMR");

我在结果中得到了增加的空间,但结果变成了“theStringThat[0-9] CMRhas”,这显然不是我需要的。我需要以某种方式告诉 Regex 不要替换为“[0-9]”,而是替换为它首先匹配的任何内容。

我知道我做错了,但我不知道什么是对的。

感谢任何帮助。

谢谢,

汤姆

最佳答案

您想使用 capturing group :

replaceAll("([0-9])CMR", "$1 CMR")

$1 引用匹配中的第一组,用括号表示。

此外,[0-9] 可以替换为 \d

关于java - 在java中用正则表达式替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41540539/

相关文章:

java - 使用字符串数组查找引号

java - LibGDX 工具.jar 丢失

javascript - DataTables自定义检测插件及排序顺序

python - 在标题中使用正则表达式过滤 Pandas 列

regex - 2个网址的正则表达式组合:两者之间相差1个字

java - c# upcasting 总是被允许的

java - java中通过序列化获取多个对象

java - 如何访问 karaf 功能文件中的系统属性

regex - 使用 awk 查找列值 *

python - 使用python通过正则表达式选择文本中的每个段落