RegEx для переменного числа раз в последовательности из 6 цифр - PullRequest
0 голосов
/ 04 мая 2019

Я попробовал следующий шаблон, чтобы проверить наличие альтернативных цифр в различных позициях, используя | и используя отрицательный прогноз:

(\d)\d\1(?!(\d)\d\2)\d{3}|\d{2}(\d)\d\3\d|(?!(\d)\d\4)(\d)\d\5

Эти значения действительны:

101123

121013

Недействительно:

101101

111111

Ответы [ 2 ]

1 голос
/ 04 мая 2019

Хорошо, вот, это будет совпадать, только если есть
не последовательность повторяющихся цифр
в каждой последовательности по 3 цифры.

есть. D1 d D1 D2 d D2 ошибка
или D1 d D1 D2 d D2 d D3 d D3 ошибка

^(?!(?:(\d)\d\1)+$)\d+$

https://regex101.com/r/Qn1i3f/1

Читаемый код

 ^ 
 (?!
      (?:
           ( \d )                        # (1)
           \d \1 
      )+
      $ 
 )
 \d+ 
 $
0 голосов
/ 04 мая 2019

Это регулярное выражение может помочь вам (*SKIP)(*FAIL) повторять две и три цифры в первой группе захвата (), а затем вернуть другие нужные шесть цифр:

(\d{2,3}).*\1(*SKIP)(*F)|([0-9]{6})

enter image description here

Первая группа фиксирует ваши нежелательные номера, используя это выражение , которое вы могли бы сделать простой заменой строки и удалить эти числа из ваших входных данных:

(\d{2,3}).*\1

enter image description here

График:

Этот график показывает, как это работает:

enter image description here

Редактировать

(*SKIP)(*F) - команда PCRE, не будет работать с Python.

...