Когда я пытаюсь совместить длину строки с помощью regex \w{m,n}
, она не соответствует строкам с длиной ниже m
, как и ожидалось, но соответствует строкам с длиной выше n
.{m, n} не соответствует ниже m, но соответствует выше n. Зачем?
>>> expression = '\w{4,32}'
>>> string = 'a'*3
>>> print re.match(expression, string)
None
>>> string = 'a'*100
>>> output = re.match(expression, string)
>>> len(output.string)
100
Почему так происходит? Как его использовать?
Если вы не хотите соответствовать более чем n символам, вы также добавляете отрицательное выражение lookahead '\ w {4,32} (?! \ W)' –
Что относительно строки, которая содержит 32 слова, за которыми следует не-слово персонаж? Или начинается с не-слова и сопровождается 32 символами слова? в этом случае ваше регулярное выражение будет терпеть неудачу. – FallenAngel
@AndreyShokhin ваш подход завершается с ошибкой, если он начинается с не-слова, за которым следуют 21 символ орда. – FallenAngel