Python RegEx: Как условно сопоставить несколько необязательных завершающих символов в URL-адресе
Мне нужно сопоставить URL в моей функции Django re_path.
Ниже приведены структуры, которые необходимо сопоставить:
- Any URL must start with either /profile or /user/profile
- 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(?:[^/]+/?)?
- необязательная последовательность из одного или нескольких символов, отличных от/
, а затем необязательный/
символ .
$
- конец строки.