java正则表达式搜索并替换所有?

时间:2015-04-30 14:00:49

标签: java regex

我有一个示例输入,可以是任意长度,并希望每4个字符添加一个空格。

例如input = xxxxxxxxxxxx

结果我期望:xxxx xxxx xxxx

我查看了replaceAll()方法,但想知道如何创建一个匹配,返回第4,第8,第12等字符索引,以便我可以这样做:

input.replaceAll("([\\S\\s)]{4})\\G", " " + input.charAt(index - 1))

其中index以某种方式被修改以获得我的正则表达式找到第4个字符的适当索引。

4 个答案:

答案 0 :(得分:2)

您可以尝试使用replaceAll(".{1,4}+(?!$)", "$0 ")

  • .{1,4}+将匹配任意1-4个字符(+将使其具有所有权)
  • (?!$)不在字符串结尾

  • 之前
  • $0 "会将其替换为第0组(当前匹配)加空格

  • 的内容

实际上我过度复制了这个正则表达式。您可以在@Kent's answer中找到基于相同想法的更简单版本。

答案 1 :(得分:2)

你可以尝试使用正则表达式:

StringBuilder str = new StringBuilder("xxxxxxxxxxxx");
int i = str.length() - 4;

while (i > 0)
{
    str.insert(i, " ");
    i = i - 4;
}

System.out.println(str.toString());

使用正则表达式:

String myString = "xxxxxxxxxxxx";
String str = myString.replaceAll("(.{4})(?!$)", "$0 ");
return str;

答案 2 :(得分:0)

使用分组; $ 1(及以上)将替换为matcher.getGroup(1)

答案 3 :(得分:0)

如果有一个

,则不会添加空格
String s = "xxxxxxxx xxxxx x xx x";
System.out.println(s.replaceAll("\\w{4}(?!\\s)", "$0 " ));

Outmput:xxxx xxxx xxxx x x xx x

demo