代码之家  ›  专栏  ›  技术社区  ›  matiasf

JAVA正则表达式:得到匹配序列

  •  1
  • matiasf  · 技术社区  · 15 年前

    在perl/php中,regex可以匹配序列并获得具有匹配序列的数组:

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

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

    这不可能吗?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Platinum Azure    15 年前

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

    例如,要仅从mm/dd/yyyy日期中获取年份,需要的regex是

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

    我不知道用Java做它的细节(例如,你可能需要躲避一些字符),但是只要知道你应该寻找“捕获组”就可以使用了。

        2
  •  2
  •   jjnguy Julien Chastang    15 年前

    您可以做类似于以下的事情:

    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 将包含与模式匹配的每个子字符串。

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

    如果你想 List<String> 变成一个 String[] 只需使用:

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