我有以下代码
String outputStr = "-XX:-HeapDumpOnOutOfMemoryError -XX:MaxPermSize=64m -Xms24m -Dcom.sun.management.jmxremote.password.file=\"E:Java\\jmx-management\\jmxremote.password\" -Djava.awt.headless=true";
outputStr.replaceAll("-Dcom.sun.management.jmxremote.password.file=[\"\\w\\=\\.\\!\\#\\$\\%\\&\\*\\+\\-\\~\\:\\;\\,\\@\\|\\\\\\/]+",
"-Dcom.sun.management.jmxremote.password.file=\"E:\\Java\\jmx-management\\jmxremote.password\"");
它正在给我
-XX:-HeapDumpOnOutOfMemoryError -XX:MaxPermSize=64m -Xms24m -Dcom.sun.management.jmxremote.password.file="E:Javajmx-managementjmxremote.password" -Djava.awt.headless=true
我想要这个
-XX:-HeapDumpOnOutOfMemoryError -XX:MaxPermSize=64m -Xms24m -Dcom.sun.management.jmxremote.password.file="E:\Java\jmx-management\jmxremote.password" -Djava.awt.headless=true
不改变替换
"-Dcom.sun.management.jmxremote.password.file=\"E:\\Java\\jmx-management\\jmxremote.password\""
答案 0 :(得分:1)
String outputStr = "-XX:-HeapDumpOnOutOfMemoryError -XX:MaxPermSize=64m -Xms24m -Dcom.sun.management.jmxremote.password.file=\"E:Java\\jmx-management\\jmxremote.password\" -Djava.awt.headless=true";
outputStr = outputStr.replace("\\\\", "\\");
答案 1 :(得分:0)
正则表达式中的主要问题是您需要在Java替换字符串文字中使用4个反斜杠来替换1个字面反斜杠。但是,还有一些我想评论的小事:
请参阅Java demo:
String outputStr = "-XX:-HeapDumpOnOutOfMemoryError -XX:MaxPermSize=64m -Xms24m -Dcom.sun.management.jmxremote.password.file=\"E:Java\\jmx-management\\jmxremote.password\" -Djava.awt.headless=true";
outputStr = outputStr.replaceAll("(-Dcom\\.sun\\.management\\.jmxremote\\.password\\.file=)[-\"\\w=.!#$%&*+~:;,@|\\\\/]+",
"$1\"E:\\\\Java\\\\jmx-management\\\\jmxremote.password\"");
System.out.println(outputStr);
// => -XX:-HeapDumpOnOutOfMemoryError -XX:MaxPermSize=64m -Xms24m -Dcom.sun.management.jmxremote.password.file="E:\Java\jmx-management\jmxremote.password" -Djava.awt.headless=true