Java 删除文本中数字中的额外空格

Java 删除文本中数字中的额外空格,java,regex,string,split,Java,Regex,String,Split,有没有什么方法可以在不使用重正则表达式的情况下删除句子中数字的多余空格 我编写了这段代码,但当我为一个巨大的输入文本执行它时,似乎要花很多时间 String text = text.replaceAll("(?<=\\b(?<![.,/])[0-9]+) +(?=[0-9]+[$|€|£|¥|¥|%|°])", ""); text = text.replaceAll("(?<=\\b(?<![.,/])[0-9]+), +(?=[0-9]+[$|€|£|¥

有没有什么方法可以在不使用重正则表达式的情况下删除句子中数字的多余空格

我编写了这段代码,但当我为一个巨大的输入文本执行它时,似乎要花很多时间

    String text = text.replaceAll("(?<=\\b(?<![.,/])[0-9]+) +(?=[0-9]+[$|€|£|¥|¥|%|°])", "");
    text = text.replaceAll("(?<=\\b(?<![.,/])[0-9]+), +(?=[0-9]+[$|€|£|¥|¥|%|°])", ",");
    text = text.replaceAll("(?<=\\b(?<![.,/])[0-9]+)\\. +(?=[0-9]+[$|€|£|¥|¥|%|°])", ".");
    text = text.replaceAll("(?<=\\b(?<![.,/\\-//%€£¥¥°\\$])[0-9]+) +(?=[0-9]+\\s?\\b(?![.,/\\-//%€£¥¥°\\$]))", "");
    text = text.replaceAll("(?<=\\b(?<![.,/\\-//%€£¥¥°\\$])[0-9]+), +(?=[0-9]+\\s?\\b(?![.,/\\-//%€£¥¥°\\$]))", ",");
    text = text.replaceAll("(?<=\\b(?<![.,/\\-//%€£¥¥°\\$])[0-9]+)\\. +(?=[0-9]+\\s?\\b(?![.,/\\-//%€£¥¥°\\$]))", ".");
输出应为

bla bla bla 12,09 bata tata 11.02

请注意小数之间的空格是如何被删除的。

您可以这样做:

String str = "bla bla bla 12. 09 bata tata 11. 02";
System.out.println(str.replaceAll("(\\d+[\\.,])\\s+(\\d+)", "$1$2"));
bla bla bla 12.09 bata tata 11.02
输出:

String str = "bla bla bla 12. 09 bata tata 11. 02";
System.out.println(str.replaceAll("(\\d+[\\.,])\\s+(\\d+)", "$1$2"));
bla bla bla 12.09 bata tata 11.02
关于使用的正则表达式:

String str = "bla bla bla 12. 09 bata tata 11. 02";
System.out.println(str.replaceAll("(\\d+[\\.,])\\s+(\\d+)", "$1$2"));
bla bla bla 12.09 bata tata 11.02
它是任意数字,后跟一个
,后跟任意空格,后跟任意数字。
我们在正则表达式中使用了分组。

您可以这样做:

String str = "bla bla bla 12. 09 bata tata 11. 02";
System.out.println(str.replaceAll("(\\d+[\\.,])\\s+(\\d+)", "$1$2"));
bla bla bla 12.09 bata tata 11.02
输出:

String str = "bla bla bla 12. 09 bata tata 11. 02";
System.out.println(str.replaceAll("(\\d+[\\.,])\\s+(\\d+)", "$1$2"));
bla bla bla 12.09 bata tata 11.02
关于使用的正则表达式:

String str = "bla bla bla 12. 09 bata tata 11. 02";
System.out.println(str.replaceAll("(\\d+[\\.,])\\s+(\\d+)", "$1$2"));
bla bla bla 12.09 bata tata 11.02
它是任意数字,后跟一个
,后跟任意空格,后跟任意数字。
我们在正则表达式中使用了分组。

您能给出一个输入示例和预期的输出示例吗请给出您的输出示例text=“bla bla bla 12.09 bata tata 11.0”我得到“bla bla bla 12.09 bata tata 11.0”文本中数字的“额外空格”是什么意思?字符串中是否有连续的额外空格?还是字符串中数字字符前后的连续额外空格?目前,这个网站:对于在java中测试正则表达式非常有用。@Dr.Mza,所以你想删除小数点和前后数字之间的空格吗?你能给出一个输入示例和预期的输出示例@pvpkiran请给出你的输出示例text=“bla bla bla 12.09 bata tata 11.0”我得到“blablabla12.09巴塔塔塔11.0”你说的“额外空间”是什么意思“文本中的数字?字符串中是否有连续的额外空格?还是字符串中数字字符前后的连续额外空格?就目前而言,这个网站:对于在java中测试正则表达式非常有用。@Dr.Mza,所以你想删除小数点和前后数字之间的空格吗?+1谢谢你,老板,我只有一个选项,如果我有例如11000个,没有。那么,如何管理它呢?在这种情况下使用这个正则表达式
(\d+[\,\s]*)\s+(\d+)
。我建议你在网上玩regex。可以从开始。句点位于括号内时,不需要用反斜杠转义。意思是,
[,]
就足够了。+1谢谢老板,我只有一个选项,如果我有11000个没有的话。那么,如何管理它呢?在这种情况下使用这个正则表达式
(\d+[\,\s]*)\s+(\d+)
。我建议你在网上玩regex。可以从开始。句点位于括号内时,不需要用反斜杠转义。意思是,
[,]
就足够了。