@Nodar
Python, Ruby, JavaScript

Как ограничить длину регулярки?

Всем привет.
Есть регулярное выражение вида "[a-z0-9]\.[a-z0-9]". Это упрощенный вариант, но суть от этого не меняется.
Строки до и после точки должны иметь хотя бы 1 символ, то есть a.b - корректная строка.
Но так же есть и ограничение по общей длине, скажем 6 символов. Как это ограничение перевести в регулярку?
Я пытался сделать - "([a-z0-9]\.[a-z0-9]){3,6}", но потом понял, что не то)
  • Вопрос задан
  • 3427 просмотров
Решения вопроса 1
adugin
@adugin Куратор тега Python
>>> re.findall(r'(?=\b[a-z\d\.]{3,6}\b)(\w+\.\w+)', 'a.123b')
['a.123b']
>>> re.findall(r'(?=\b[a-z\d\.]{3,6}\b)(\w+\.\w+)', 'a.123b12')
[]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Навскидку могу предложить проверять это двумя запросами.

Ну или если совсем извратиться

([a-z0-9]{1}\.[a-z0-9]{5} | [a-z0-9]{2}\.[a-z0-9]{4} | [a-z0-9]{3}\.[a-z0-9]{3} | итд )
Ответ написан
@iamnothing
Вроде так:
(?=.{3,6}$)\w+\.\w+
По мотивам stackoverflow.com/questions/2973436/regex-lookahea...
Ответ написан
А как вариант использовать регулярку:
^[a-z0-9]{1,4}\.[a-z0-9]{1,4}$
а общую длину проверять уже python?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы