Java正则表达式从开始排除日期,最后排除日期

时间:2012-01-13 11:44:34

标签: java regex date extract

需要Java中的一些正则表达式帮助。我有一个字符串,其中包含文本,并且始终是日期之后的日期。然后在日期之后,没有空格,新文本开始并以日期结束。等等,然后继续。我需要用循环来获取所有文本实例。它需要从开头排除日期并在最后期望日期。有人可以建议一个好的正则表达式吗?

String candidateString = "dffsd fs sfd 12.12.12asd saddsa dasd 12.12.12fsadf sdfsdf sdf 10.10.10";
Pattern p2 = Pattern.compile(".*?(?![0-9][0-9].[0-9][0-9].[0-9][0-9])[a-zA-Z] (?=[0-9][0-9].[0-9][0-9].[0-9][0-9])");
Matcher matcher2 = p2.matcher(candidateString);
while (matcher2.find()) {
  System.out.println(matcher2.group());
}

此代码最终需要日期,但我无法弄清楚如何从头开始排除日期。

1 个答案:

答案 0 :(得分:3)

看看这是不是你想要的?

    String candidateString =
        "Microsoft Visual FoxPro 6.0 language reference 13.02.12";
        //"dffsd fs sfd 12.12.12asd saddsa dasd 12.12.12fsadf sdfsdf sdf 10.10.10";

    Pattern p2 =
        Pattern
            .compile("(.*?(?![0-9][0-9]\\.[0-9][0-9]\\.[0-9][0-9])) ([0-9][0-9]\\.[0-9][0-9]\\.[0-9][0-9])");

    Matcher matcher2 = p2.matcher(candidateString);

    while (matcher2.find()) {
        System.out.println("String: |" + matcher2.group(1) + "| Date: |"
            + matcher2.group(2) + "|");
    }

这为我打印下面的内容(已包含| [管道]以显示边界。)

String: |dffsd fs sfd| Date: |12.12.12|
String: |asd saddsa dasd| Date: |12.12.12|
String: |fsadf sdfsdf sdf| Date: |10.10.10|

String: |Microsoft Visual FoxPro 6.0 language reference| Date: |13.02.12|