Java регулярное выражение исключить дату от начала и ожидаемую дату в конце - PullRequest
2 голосов
/ 13 января 2012

Нужна помощь в регулярных выражениях в 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 Ответ

3 голосов
/ 13 января 2012

Проверьте, хотите ли вы этого?

    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: |Microsoft Visual FoxPro 6.0 language reference| Date: |13.02.12|
...