我正在使用java并且拥有可以有多个空格且等于" ="标志如下图所示。
String temp = "[name='FPC:CPU']/XM chip/allocate";
此临时字符串将传递给其他程序因空格和等号而失败。
我怎样才能逃离空间" ="字符?
我希望从原始字符串输出
[name='FPC:CPU']/XM chip/allocate
to
[name\='FPC:CPU']/XM\ chip/allocate
想知道如何使用temp.replaceAll
答案 0 :(得分:1)
这应该是非常直接的。
System.out.println("foo bar=baz".replaceAll("([ =])" "\\\\$1"));
应打印此
foo\ bar\=baz
正则表达式中的括号形成一个捕获组,字符类[ =]
将捕获空格和等号。
在替换表达式中,$1
指的是第一个捕获组。唯一有点棘手的是逃避反斜杠。
通常,在正则表达式替换中,反斜杠本身是一个转义字符。所以你需要它们中的两个来插入一个反斜杠,然而反斜杠也是Java String中的一个转义,所以要将两个反斜杠放入一个Java String(以形成正则表达式转义),你必须插入四个反斜杠。这就是你最终得到“\\ $ 1”的方式。