Python - Приоритет шаблона регулярного выражения - несколько групп цифр - PullRequest
0 голосов
/ 08 мая 2020

моя цель - создать регулярное выражение, способное обрабатывать эту серию цифр:

0014 2139 2411
0003 2139 2411
0104 43
022

Я пытаюсь найти способ создать синтаксис Regex, который вернет группу из MAX 4 цифры, разделенные пробел с повторением MAX 3, что дает приоритет результата полного совпадения 4 цифр. Например, если у меня есть этот текст:

  0014434 2139 2411
  Some text line... bla bla
  0003 2139 2411
  0003 2039 2411
  0104 43
  xxxx      
  0223423423

, я бы хотел, чтобы Regex вернул: 0003 2139 2411

В этом случае:

001 2139 2411
0003 21
0104 43

I ' d, как Regex, чтобы вернуть -> 0003 21

Я пробовал с \d{4}, но в первой строке он нашел 3 разных совпадения. Спасибо Regs

ОБНОВЛЕНИЕ

В соответствии с запросом @Abion, используя это:

(^\d{1,4}$|^\d{4} \d{1,4}$|^\d{4} \d{4} \d{1,4}$)

работает, кроме серии из 4 символов + пробел:

введите описание изображения здесь

1 Ответ

1 голос
/ 08 мая 2020

Regex:

(^\d{1,4}$|^\d{4} \d{0,4}$|^\d{4} \d{4} \d{0,4}$)

Используя условные выражения группы, этот шаблон соответствует группе di git от одной до четырех цифр ИЛИ группе di git из четырех цифр, за которой следует группа di git от одной до четырех цифр ИЛИ две группы di git из четырех цифр, за которыми следует группа di git от одной до четырех цифр. Эти критерии исключают первую строку вашего второго примера (группа di git из трех цифр, за которой следуют другие группы di git), что приводит к соответствию второй строке.

Обратите внимание, вы должны предоставить re.MULTILINE вариант для работы этого шаблона.

Пример: https://regex101.com/r/H3vKJX/2

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