9

正規表現を使用して文字列から2つの日付を抽出しようとしています-そして何らかの理由で-正規表現は日付を抽出しません-これは私のコードです:

private  String[] getDate(String desc) {
    int count=0;
    String[] allMatches = new String[2];
    Matcher m = Pattern.compile("(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\\d\\d(?:,)").matcher(desc);
    while (m.find()) {
        allMatches[count] = m.group();
    }
    return allMatches;
}

私の string-desc は次"coming from the 11/25/2009 to the 11/30/2009" のとおりです。null 配列が返されます...

4

5 に答える 5

7

3 問題 :

dd/MM/YYYY1)正規表現が format であるformat で日付を解析しようとしていますMM/dd/YYYY

count2) while ループでインクリメントするのを忘れました。

3)(?:,)正規表現の最後の部分は役に立ちません。

このコードは私のコンピューターで動作します:

private static String[] getDate(String desc) {
  int count=0;
  String[] allMatches = new String[2];
  Matcher m = Pattern.compile("(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\\d\\d").matcher(desc);
  while (m.find()) {
    allMatches[count] = m.group();
    count++;
  }
  return allMatches;
}

テスト:

public static void main(String[] args) throws Exception{
  String[] dates = getDate("coming from the 25/11/2009 to the 30/11/2009");

  System.out.println(dates[0]);
  System.out.println(dates[1]);

}

出力:

25/11/2009
30/11/2009
于 2013-09-03T11:43:16.457 に答える