Рубрики
Без рубрики

Проверка, имеет ли номерную последовательность две или четыре цифры в Python

Использование регулярных выражений Python для проверки того, является ли этот год элементом даты строки либо два или четыре цифра. Теги с Python, Regex.

У меня была интересная проблема на днях, в которой я думал, будет довольно тривиальным, но на самом деле оказалось немного боли.

Даты Великобритании часто записаны в следующих форматах:

  • дд/мм/г
  • ДД/ММ/ГГГГ

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

Первое регулярное выражение, которое я пытался, оказался не действительным в Python, поэтому я начал использовать отличные Pythex Интернет-инструмент, чтобы помочь поделать что-то, что будет работать.

В примерах при следующем добавьте начало и конечные якоря мысленно, я их пропускал.

Моя первая наивная попытка не работала вообще:

\d{2}/\d{2}/[\d{4}|\d{2}]

Это соответствовало, если бы год был одна цифра долго. Я думал, что, возможно, именно потому, что у меня была более длительная последовательность в начале, но обмениваясь вокруг или (символ трубы) не имеет значения.

Первый вопрос здесь – квадратные скобки, которые на самом деле является выбором последовательности символов. Я просто забыл, что это означало, поэтому я думаю, что все, что было сопоставлено, было однозначным характером, так как весь квадратный кронштейн оценивает одному символу.

Хорошо…

\d{2}/\d{2}/\d{2}|\d{4}

Этот вид работ, за исключением того, что он не соответствует четырем датам цифры, но все, что имеет как минимум две цифры, поэтому три цифры в порядке, если у вас нет границы линии.

Как или Оценивается слева направо, моя первая формулировка была фактически правильной.

\d{2}/\d{2}/\d{4}|\d{2}

А также для TL; доктор вырезать и вставить версию

r'\A\d{2}/\d{2}/(\d{4}|\d{2})\Z'

Я не ожидал, что это будет такая борьба, я был в своем роде старая поговорка попыток решить проблему с регулярным выражением и заканчиваться двумя проблемами …

Оригинал: “https://dev.to/rrees/checking-whether-a-number-sequence-has-two-or-four-digits-in-python-4a82”