3 回答
TA贡献1827条经验 获得超4个赞
你应该使用正则表达式
\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);
TA贡献1818条经验 获得超11个赞
为了获得预期的输出,您可以使用此正则表达式。
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
TA贡献1818条经验 获得超3个赞
怎么样:
String myregex = "\\s([1-9]+\\.)"; String output = parentString.replaceAll(myregex, "\n$1");
添加回答
举报