有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有这样的输入

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) 个答案

  1. # 1 楼答案

    您可以使用:

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

    RegEx Demo

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

  2. # 2 楼答案

    您可以使用String.replaceAll()来完成以下操作:

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

    你的regex有点错误,也应该是\.[\.]+。在Java中,您必须逃离\,因此它将是\\.[\\.]+

  3. # 3 楼答案

    这个代码应该有效

    [\.]+[\.]+
    

    这将匹配2个或更多连续周期。然后可以用句点和空格替换每个匹配项

  4. # 4 楼答案

    您可以使用以下选项:

    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
    
  5. # 5 楼答案

    你需要拉第一个\。与之匹配,然后是1+\。很像

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

    [\.\.]将匹配\或。或\或。witch是对单个字符的冗余检查