逃离空间,等于角色

时间:2016-06-15 23:14:47

标签: java replaceall

我正在使用java并且拥有可以有多个空格且等于" ="标志如下图所示。

String temp = "[name='FPC:CPU']/XM chip/allocate";

此临时字符串将传递给其他程序因空格和等号而失败。

我怎样才能逃离空间" ="字符?

我希望从原始字符串输出

[name='FPC:CPU']/XM chip/allocate 

to 

[name\='FPC:CPU']/XM\ chip/allocate  

想知道如何使用temp.replaceAll

来做到这一点

1 个答案:

答案 0 :(得分:1)

这应该是非常直接的。

System.out.println("foo bar=baz".replaceAll("([ =])" "\\\\$1"));

应打印此

foo\ bar\=baz

正则表达式中的括号形成一个捕获组,字符类[ =]将捕获空格和等号。

在替换表达式中,$1指的是第一个捕获组。唯一有点棘手的是逃避反斜杠。

通常,在正则表达式替换中,反斜杠本身是一个转义字符。所以你需要它们中的两个来插入一个反斜杠,然而反斜杠也是Java String中的一个转义,所以要将两个反斜杠放入一个Java String(以形成正则表达式转义),你必须插入四个反斜杠。这就是你最终得到“\\ $ 1”的方式。