Python RegEx: Как условно сопоставить несколько необязательных завершающих символов в URL-адресе

Мне нужно сопоставить URL в моей функции Django re_path.

Ниже приведены структуры, которые необходимо сопоставить:

  1. Any URL must start with either /profile or /user/profile
  2. Any URL must end with either profile , or profile/ or profile/blabla

Ниже приведены примеры разрешенных URL-адресов:

  • /профиль
  • /профиль/
  • /профиль/asd
  • /профиль/asd/
  • /user/profile
  • /user/profile/
  • /user/profile/asd
  • /user/profile/asd/

Я пробовал следующее, но не получается:

re_path(r'^profile/?.*$', views.my_view)

Любая помощь приветствуется, спасибо!

Вы можете использовать

^/(?:user/)?profile(?:/(?:[^/]+/?)?)?$

См. regex demo. Детали:

  • ^ - начало строки
  • / - символ /
  • (?:user/)? - необязательная user/ строка
  • profile - фиксированная строка
  • (?:/(?:[^/]+/?)?)? - необязательная последовательность из
    • / - символ / char
    • (?:[^/]+/?)? - необязательная последовательность из одного или нескольких символов, отличных от /, а затем необязательный / символ
    • .
  • $ - конец строки.
Вернуться на верх