Чтобы соответствовать либо / или концу содержимого, используйте (/|\z)
Это применимо только в том случае, если вы не используете многострочное сопоставление (т. Е. Вы сопоставляете один URL-адрес, а не список разделенных новой строкой URL-адресов).
Чтобы поставить это с обновленной версией того, что у вас было:
/(\S+?)/(\d{4}-\d{2}-\d{2})-(\d+)(/|\z)
Обратите внимание, что я изменил начало, чтобы оно было не жадным совпадением для непробельных символов (\S+?
), а не соответствовало чему-либо и всем (.*
)