如何使用java正则表达式正确替换字符串中的字符?

时间:2018-01-12 02:11:50

标签: java regex

我是我的java应用程序,我有一个跟随字符序列:b"2(任何单个字符,后跟双引号后跟一位数字)

我需要用单引号字符替换双引号。 我正在尝试这个:

Pattern p = Pattern.compile(".\"d");
Matcher m = p.matcher(initialOutput);
String replacement = m.replaceAll(".'d");

这似乎没有做任何事情。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

首先,d表示文字字符。您正在寻找代表数字的\d

另一个问题是您要使用字符串文字".'d"替换变量字符。一种解决方案是capture变量部分并在替换中引用它们:

String replacement = initialOutput.replaceAll("(.)\"(\\d)", "$1'$2");

另一种方法是使用lookarounds检查周围的字符,而不实际匹配它们以进行替换:

String replacement = initialOutput.replaceAll("(?<=.)\"(?=\\d)", "'");