有什么方法可以在不使用繁重的正则表达式的情况下从句子中的数字中删除多余的空格吗?
我编写了这段代码,但是当我针对巨大的输入文本执行它时,它似乎花费了很多时间。
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
输出应该是
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
关于使用的正则表达式:
它是任意数量的数字,后跟 .
或 ,
,后跟任何空格,后跟任何数字。
我们在正则表达式中使用了分组。
关于java - 删除文本中数字中的多余空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51596404/