【问题标题】:How would I write the java regular expression for the following pattern [closed]我将如何为以下模式编写 java 正则表达式 [关闭]
【发布时间】:2013-07-20 01:33:38
【问题描述】:

我将如何为以下模式编写 java 正则表达式:

"123(1,2),234(1,2),345(1,2),123456(1,2),789(1,2)";

结果应该是这样打印出来的:

123 (1,2) 234 (1,2) 345 (1,2) 123456 (1,2) 789 (1,2)

【问题讨论】:

  • 您可能会发现this Java regex text website 很有帮助。
  • 正则表达式耗费了大量脑力。我想写一个 for 循环并完成它。
  • String[] output = input.replace("("," (").replace("),", ") ").split(" ");
  • @Enigmadan 不完全是。那个问题是关于在括号后拆分逗号,但不是在括号内的任何逗号,而这个问题是关于分别捕获括号及其内容,以及括号外的数字序列。

标签: java regex


【解决方案1】:

使用此正则表达式进行全局匹配:(?<=^|\),)[0-9]+|\([0-9]+,[0-9]+\)。这匹配前面有“)”的一组连续数字或字符串的开头,或格式为 (#,#) 的序列,其中 # 是一组连续的数字。

【讨论】:

    【解决方案2】:

    这样就可以了:

    String[] parts = str.split("(?=\\()|(?<=\\)),");
    

    这是一个测试:

    public static void main (String[] args) throws java.lang.Exception {
        String str = "123(1,2),234(1,2),345(1,2),123456(1,2),789(1,2)";
        String[] parts = str.split("(?=\\()|(?<=\\)),");
        System.out.println(Arrays.toString(parts)); }
    }
    

    输出:

    [123, (1,2), 234, (1,2), 345, (1,2), 123456, (1,2), 789, (1,2)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-06
      相关资源
      最近更新 更多