我想用一些字符替换数字前的空格,但是我不能使用以下正则表达式来替换它:
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
答案 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