为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式替换组

正则表达式替换组

吃鸡游戏 2021-12-01 15:48:23
我想用一些字符替换数字之前的空格,但我无法使用以下正则表达式来做到这一点:    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.skdhhfsdl2. hkjkj3.234hbn,m但是,我目前得到1.skdhhfsdl hkjkj234hbn,m
查看完整描述

3 回答

?
GCT1015

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);


查看完整回答
反对 回复 2021-12-01
?
慕尼黑8549860

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


查看完整回答
反对 回复 2021-12-01
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

怎么样:

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


查看完整回答
反对 回复 2021-12-01
  • 3 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信