регулярное выражение назад с датой - PullRequest
2 голосов
/ 05 августа 2020

Мне не удается решить следующую проблему:

Мне нужно извлечь число 7 di git (например, 2774800) в середине строки с помощью регулярного выражения. Это из счета-фактуры. В каждом счете у меня другой номер 7-ди git. Описание продукта также всегда меняется, только дата всегда остается как dd.mm.yyyy, поэтому я бы использовал это как индикатор и выполнял ретроспективный поиск числа 7-di git, но я не могу заставить это работать .

Описание продукта, которое всегда меняется (иногда здесь скобка) 2774800 21.11.2014

Я использовал для обозначения даты:

((0[1-9]|[12]\d|3[01]).(0[1-9]|1[0-2]).[12]\d{3})

Для 7 di git:

(?=\d{7}\s)\d+

Я не могу заставить их работать вместе правильно, так что индикатором является дата, и он соответствует 7- di git номер.

1 Ответ

1 голос
/ 05 августа 2020

Вы можете использовать

\b\d{7}(?=\s+(?:0[1-9]|[12]\d|3[01])\.(?:0[1-9]|1[0-2])\.[12]\d{3})

См. демонстрацию регулярных выражений .

Или, чтобы сопоставить числа от 6 до 8 di git:

\b\d{6,8}(?=\s+(?:0[1-9]|[12]\d|3[01])\.(?:0[1-9]|1[0-2])\.[12]\d{3})

Подробности

  • \b - граница слова
  • \d{7} - семь цифр
  • (?=\s+(?:0[1-9]|[12]\d|3[01])\.(?:0[1-9]|1[0-2])\.[12]\d{3}) - положительный просмотр вперед, требующий 1+ пробелов, а затем шаблон, похожий на дату, сразу справа от текущего местоположения.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...