【问题标题】:Java regex: Get the matched sequenceJava regex:获取匹配的序列
【发布时间】:2010-06-29 14:56:01
【问题描述】:

在 Perl/PHP 中,正则表达式可以匹配一个序列并获得一个匹配序列的数组:

preg_match('/20[0-1][0-9]/', $inputstring, $array_return); // PHP

我不知道如何在 Java 中做到这一点。 match.group() 返回整个字符串。

这不可能吗?

【问题讨论】:

    标签: java php regex match


    【解决方案1】:

    你可以做的是类似于以下的事情:

    Pattern p = Pattern.compile("\\w"); // Replace "\\w" with your pattern
    String str = "Some String To Match";
    Matcher m = p.matcher(str);
    List<String> matches = new ArrayList<String>();
    while(m.find()){
        matches.add(m.group());
    }
    

    在此之后,matches 将包含与 Pattern 匹配的每个子字符串。

    在这种情况下,它只是每个字母,不包括空格。

    如果您想将 List&lt;String&gt; 转换为 String[],只需使用:

    String[] matchArr = matches.toArray(new String[matches.size()]);
    

    【讨论】:

      【解决方案2】:

      如果您只想返回部分匹配项,请使用捕获括号。

      例如,要仅从 MM/DD/YYYY 日期中获取年份,您想要的正则表达式是

      \d{2}/\d{2}/(\d{4})
      

      我不知道在 Java 中执行此操作的具体细节(例如,您可能需要转义一些字符),但只知道您应该寻找“捕获组”应该是有用的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-08
        • 1970-01-01
        • 2017-04-24
        相关资源
        最近更新 更多