正则表达式替换组

时间:2018-10-22 07:36:39

标签: java regex

我想用一些字符替换数字前的空格,但是我不能使用以下正则表达式来替换它:

    String parentString = " 1.skdhhfsdl 2. hkjkj 3.234hbn,m";
    String myregex = "/(\\s)[1-9]+./";
    String output = parentString.replaceAll(myregex, "$1ppp");
    System.out.println(output);

请帮助我解决正则表达式。

更新

在实现@CertainPerformant和@Wiktor的建议之后,我的代码看起来像

String myregex = "(\\s)[1-9]+.";
String output = parentString.replaceAll(myregex, "\n");

我希望输出像

1.skdhhfsdl
2. hkjkj
3.234hbn,m

但是,我目前正在得到

1.skdhhfsdl
 hkjkj
234hbn,m

3 个答案:

答案 0 :(得分:1)

怎么样:

String myregex = "\\s([1-9]+\\.)";
String output = parentString.replaceAll(myregex, "\n$1");

答案 1 :(得分:1)

您应该使用正则表达式

\s+([1-9]+\.)

请注意,我改为捕获了数字部分。更换时,通常会捕获要保留的零件。还要注意,我删除了前斜杠和后斜杠,因为Java中不需要这些斜杠。 .也应该转义,就像我在这里所做的那样。

替换为\n$1,意思是“换行,然后是组1”。

String parentString = " 1.skdhhfsdl 2. hkjkj 3.234hbn,m";
String myregex = "\\s+([1-9]+\\.)";
String output = parentString.replaceAll(myregex, "\n$1");
System.out.println(output);

答案 2 :(得分:1)

为了获得预期的输出,可以使用此正则表达式。

public static void main(String[] args) throws Exception {
    String parentString = " 1.skdhhfsdl 2. hkjkj 3.234hbn,m";
    String myregex = "\\s+(?=[1-9]+\\.)";
    String output = parentString.trim().replaceAll(myregex, "\n");
    System.out.println(output);
}

这仅匹配一个或多个空格,后跟数字和点,并且仅用换行符替换该空格(由于超前)。 parentString.trim()确保在第一行之前不会出现换行符。

输出:

1.skdhhfsdl
2. hkjkj
3.234hbn,m