我尝试在replaceAll
函数中使用正则表达式。我需要做一个真正简单的任务,就是用一个没有空格的char来切换ever =和〜运算符!
例如:
(srcIP = 0.0.0.0) AND (dstIP~0.0.0.0 OR protocol = TCP)
转向
(srcIP:0.0.0.0) AND (dstIP:0.0.0.0 OR protocol:TCP)
我正在尝试使用以下代码
query.replaceAll("[ ]*(=|~)[ ]*", ":");
但它不起作用。有没有办法使用replaceAll
函数执行此操作?它似乎不适用于正则表达式。
答案 0 :(得分:2)
你的正则表达式很好(虽然可以改进)。证明:
System.out.println("(srcIP = 0.0.0.0) AND (dstIP~0.0.0.0 OR protocol = TCP)".replaceAll("[ ]*(=|~)[ ]*", ":"));
打印:
(srcIP:0.0.0.0) AND (dstIP:0.0.0.0 OR protocol:TCP)
字符串在Java中是不可变的,replaceAll
不会就地修改字符串,它会返回一个新字符串。您可能不会将结果分配回去。
您的正则表达式可以重写为:
\\s*[=~]\\s*
答案 1 :(得分:0)
此
System.out.println("(srcIP = 0.0.0.0) AND (dstIP~0.0.0.0 OR protocol = TCP)".replaceAll("[ ]*(=|~)[ ]*", ":"));
对我来说很好用