两个或多个点的正则表达式应分隔为点空间

时间:2017-04-19 19:14:10

标签: java regex

我有这样的输入。

And I walked 0.69 miles. I had a burger..I took tea...I had a coffee

我的目标是将两个或多个点转换为单个点,然后转换为空格,以便输入根据语法正确结束而变得正确。目标输出是:

And I walked 0.68 miles. I had a burger. I took tea. I had a coffee

我为此做了一个正则表达式:

[\\.\\.]+

我在Regex Tester检查了它,它不会按照我的意愿行事。因为它也包括0.69和此行.的结尾,我也不想要。如果有人可以帮助我,我将感激你。

5 个答案:

答案 0 :(得分:4)

您可以使用:

str = str.replaceAll("\\.{2,}", ". ");

RegEx Demo

\\.{2,}匹配2个或更多连续点,". "用点和空格替换它们。

答案 1 :(得分:1)

此代码应该可以使用

[\.]+[\.]+

这将匹配2个或更多连续时段。然后,您可以用句点和空格替换每个匹配

答案 2 :(得分:1)

您可以使用:

String str = "And I walked 0.69 miles. I had a burger..I took tea...I had a coffee";
String result = str.replaceAll("\\.{2,}", ". ");

<强>输出

And I walked 0.68 miles. I had a burger. I took tea. I had a coffee

答案 3 :(得分:1)

你需要拉第一个\。出去匹配,然后1+ \。

\.\.+ or Java string escaped \\.\\.+

[\。\。]将匹配\或。或\或。女巫是对一个角色的冗余检查。

答案 4 :(得分:0)

您可以使用String.replaceAll()来完成此任务:

myString.replaceAll("\\.[\\.]+", ". ");

您的regex稍有不妥,也应该是\.[\.]+。在Java中,您必须逃离\,因此它将\\.[\\.]+ ...