Как найти дату YYYY-MM-DD в файле txt - PullRequest
0 голосов
/ 15 декабря 2018

Это моя строка

2007-01-12Jakistxt2008-01-31xxx2008-02-292008-15-102008-19-452009-05-0120999-11-11pppp2001-00-0109-01-012001-01-002009-01-1112009-02-291998-11-11

Я пытался найти дату в формате YYYY-MM-DD.Я знаю, что напрямую это невозможно.Мне удалось распечатать этот результат

2007-01-12
2008-01-31
2008-02-292
2008-19-452
0999-11-11
2001-00-010
2001-01-002
2009-02-291 



     String regex4="\\d{4}-\\d{2}-\\d{2,3}";
     Pattern wzor4=Pattern.compile(regex4);
     Pattern wzor5=Pattern.compile(regex5);

    Matcher efekt4=wzor4.matcher(wyrazenie);
    String rezultat4="";

    while (efekt4.find()) {
        list422.add(efekt4.group());

    }
    for(int i=0;i<list422.size();i++) System.out.println(list422.get(i));`

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Я положил String regex4="(?(?<=^)|(?<=\D))\d{4}-\d{2}-\d{2}(?(?=$)|(?=\D))"; , и Затмение сказал

 Unknown inline modifier near index 2

(? (? <= ^) | (? <= \ D)) \ d {4} - \ d {2} -\ d {2} (? (? = $) | (? = \ D)) ^ </p>

0 голосов
/ 15 декабря 2018

Попробуйте этот шаблон: (?(?<=^)|(?<=\D))\d{4}-\d{2}-\d{2}(?(?=$)|(?=\D)).

Используется \d{4}-\d{2}-\d{2} для соответствия вашему формату строки.

Кроме того, за датой не может следовать или предшествовать любая цифра:

(?(?<=^)|(?<=\D)) - это условный поиск: если мы находимся в начале строки, затем начинаем сопоставление, если нет, убедитесь, что то, что раньше, не является цифрой (\D)

(?(?=$)|(?=\D)) - это предварительный просмотр, аналогичный предварительному просмотру.

Демонстрация

В качестве альтернативы вы можете использовать просто \d{4}-\d{2}-\d{2}, что также будет соответствовать соседству с каждымдругое.

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...