Java:如何替换任何空间(不是空格),只是空格,后面没有空格的另一个空格

时间:2013-11-25 18:36:14

标签: java regex

example :"4054a4:e8 c8 f0 ff ff   callq  404571 <junkfunction+0x552>"
o/p :"  4054a4:e8c8f0ffff  callq  404571<junkfunction+0x552>"

我尝试使用

string.replaceall("[ (? )]", "")

但它也取消了callq和404571之间的空间。

有人可以帮帮我吗?

4 个答案:

答案 0 :(得分:2)

您可以使用以下表达式:

    (?=\S)
// ^
// There is a space here

这将匹配任何空格字符,只要它后面跟不是空格\S的东西。

或者,如果你更喜欢常规空格,那么:

(?! )

在Java中:

String input = "4054a4:e8 c8 f0 ff ff   callq  404571 <junkfunction+0x552>";
String result = input.replace(" (?! )", "");

答案 1 :(得分:2)

如果我理解得很好,你可以使用:

yourstring.replaceAll(" (?! )", "");

答案 2 :(得分:2)

你想:

string.replaceall("(?<! ) (?! )", "")

只有在任何一侧没有其他空格时才删除空格。如您的示例所示,保留2个或更多空间的系列。

Working on RegExr - 生成您的确切输出字符串

in:  4054a4:e8 c8 f0 ff ff   callq  404571 <junkfunction+0x552>
out: 4054a4:e8c8f0ffff   callq  404571<junkfunction+0x552>

答案 3 :(得分:0)

可以做得很蠢:

string = string.replaceAll("( +) ", "$1");

删除至少两个空格的任何序列,少一个。

取决于边界情况(字符串末尾的空格)。