猿问

正则表达式替换组

我想用一些字符替换数字之前的空格,但我无法使用以下正则表达式来做到这一点:


    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


吃鸡游戏
浏览 171回答 3
3回答

GCT1015

你应该使用正则表达式\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);

慕尼黑8549860

为了获得预期的输出,您可以使用此正则表达式。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.skdhhfsdl2. hkjkj3.234hbn,m

泛舟湖上清波郎朗

怎么样:String myregex = "\\s([1-9]+\\.)"; String output = parentString.replaceAll(myregex, "\n$1");
随时随地看视频慕课网APP

相关分类

Java
我要回答