Хобрук: Ваш путь к мастерству в программировании

Сопоставьте первую дату в соответствии с регулярным выражением

Я пытаюсь написать строку поиска регулярных выражений для Notepad++, которая будет соответствовать первой дате в каждой строке.

Мой текст выглядит примерно так:

Народные скалы для Фреда, iTromsø, 09.09.2017 19:09 Мартин Легланд, Издатель в сети.
Народные скалы для Фреда, iTromsø, 09.09.2017, Мартин Легланд 31.12.2017 Издатель в сети.
Nå skal folk for fred, iTromsø, 09.09.2017 19:09 Martin Lægland, Publisert på nett.

Мне нужна только первая дата в каждой строке, поэтому исключая 31.12.2017 во второй строке.

Я пробовал \K(([0-9]{2}).([0-9]{2}).([0-9]{4})), но это дает мне только второе свидание, а не первое.

14.11.2017

  • Вы уже пробовали что-нибудь? Пожалуйста, поделитесь своими попытками, чтобы мы не повторяли одни и те же усилия. 14.11.2017
  • @WiktorStribiżew Извините, я пытался обновить сейчас. Мой первый вопрос о Stackoverflow :) 14.11.2017
  • @ThomasTallaksen, вы можете использовать ^.*?\K\d+\.\d+\.\d+ 14.11.2017

Ответы:


1

Код

См. здесь использование регулярного выражения

^.*?\K\d+\.\d+\.\d+

Полученные результаты

Вход

Nå skal folk få fred, iTromsø, 09.09.2017 19:09 Martin Lægland, Publisert på nett.
Nå skal folk få fred, iTromsø, 09.09.2017, Martin Lægland 31.12.2017 Publisert på nett.
Nå skal folk få fred, iTromsø, 09.09.2017 19:09 Martin Lægland, Publisert på nett.

Выход

09.09.2017
09.09.2017
09.09.2017

Объяснение

  • ^ Займите позицию в начале линии
  • .*? Соответствует любому символу любое количество раз, но как можно меньше
  • \K Сбросить начальную точку сообщенного совпадения. Любые ранее использованные персонажи больше не участвуют в финальном матче.
  • \d+\.\d+\.\d+ Соответствует любой цифре один или несколько раз, за ​​которой следует точка . буквально, за которой следует то же самое (любая цифра один или несколько раз, за ​​которой следует точка . буквально), за которой следует любая цифра один или несколько раз
14.11.2017
  • +1, поскольку вы взломали его первым, я бы попросил вас включить квантификаторы вместо любого количества попаданий. 14.11.2017
  • @SriniV спасибо, я собирался использовать определенные квантификаторы, но я не думаю, что это абсолютно необходимо, исходя из характера формата ввода. ОП может использовать ваше решение, если указание квантификаторов является неотъемлемой частью решения их проблемы. 14.11.2017

  • 2

    Полный кредит на ctwheels. С другим ароматом, чтобы определить границы

    ^.*?\K[0-9]{2}+\.[0-9]{2}+\.[0-9]{4}+
    

    Пояснение:

    ^ asserts position at start of the string
    .*? matches any character (except for line terminators)
    *? Quantifier — Matches between zero and unlimited times, as few times as possible, expanding as needed (lazy)
    \K resets the starting point of the reported match. Any previously consumed characters are no longer included in the final match
    Match a single character present in the list below [0-9]{2}+
    {2}+ Quantifier — Matches exactly 2 times
    0-9 a single character in the range between 0 - 9 
    \. matches the character . literally (case sensitive)
    Match a single character present in the list below [0-9]{2}+
    {2}+ Quantifier — Matches exactly 2 times
    0-9 a single character in the range between 0 - 9 
    \. matches the character . literally (case sensitive)
    Match a single character present in the list below [0-9]{4}+
    {4}+ Quantifier — Matches exactly 4 times
    0-9 a single character in the range between 0 - 9 
    Global pattern flags
    g modifier: global. All matches (don't return after first match)
    
    14.11.2017
  • {4}+ равно {4}, так как вы не можете сопоставить точно 4 символа притяжательным, жадным или ленивым способом. Он всегда будет пытаться сопоставить 4 вхождения. 14.11.2017
  • Новые материалы

    Понимание СТРУКТУРЫ ДАННЫХ И АЛГОРИТМА.
    Что такое структуры данных и алгоритмы? Термин «структура данных» используется для описания того, как данные хранятся, а алгоритм используется для описания того, как данные сжимаются. И данные, и..

    Как интегрировать модель машинного обучения на ios с помощью CoreMl
    С выпуском новых функций, таких как CoreML, которые упростили преобразование модели машинного обучения в модель coreML. Доступная модель машинного обучения, которую можно преобразовать в модель..

    Создание успешной организации по науке о данных
    "Рабочие часы" Создание успешной организации по науке о данных Как создать эффективную группу по анализу данных! Введение Это обзорная статья о том, как создать эффективную группу по..

    Технологии и проблемы будущей работы
    Изучение преимуществ и недостатков технологий в образовании В быстро меняющемся мире технологии являются решающим фактором в формировании будущего работы. Многие отрасли уже были..

    Игорь Минар из Google приедет на #ReactiveConf2017
    Мы рады сообщить еще одну замечательную новость: один из самых востребованных спикеров приезжает в Братиславу на ReactiveConf 2017 ! Возможно, нет двух других кланов разработчиков с более..

    Я собираюсь научить вас Python шаг за шагом
    Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

    Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
    Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..