Это работа, как и ожидалось, после изменения этой части "{2,}" на "{1,}"
import re
s = 'stackoverflow.stack.com/read/this-is-a-very-nice-test'
out = re.findall(r'(\w[-\w]+){1,}', s)
print(out)
вывод:
['stackoverflow', 'stack', 'com', 'read', 'this-is-a-very-nice-test']
РЕДАКТИРОВАТЬ: Объяснение с точки зрения python: повторяющийся квалификатор {m, n}, где m и n - десятичные целые числа.Этот квалификатор означает, что должно быть не менее m повторений, и самое большее n.
в вашем предыдущем примере "{2,}" вы устанавливаете m = 2 и n равны бесконечности, что означает, что шаблон должен повторяться по крайней мере2 раза, но если вы установите m = 1, как в "{1,}", он примет одноразовое вхождение и будет эквивалентно "+", то есть вы можете заменить r '(\ w [- \ w] +){1,} 'to (r' (\ w [- \ w] +) + 'и все равно получите тот же результат