#regex
#регулярное выражение
Вопрос:
Я совершенно сбит с толку, прочитав так много статей о регулярных выражениях по этому поводу.
Я ищу соответствие первому URL-адресу, остальные не должны совпадать:
https://subdomain.example.com/test <== only this should match
https://subdomain.example.com/paht/test.css
https://subdomain.example.com/path/path/test.js
https://example.com/test/
Я ищу соответствие только тем маршрутам, которые не имеют завершающих косых черт или расширений файлов.
Вот мое регулярное выражение: https:.*^(?!([^/]|(.[a-z]{2,8})))$
Вы можете попробовать здесь: https://regexr.com/5dic8
Ответ №1:
Используйте
^https?://(?:.*/)?[^/.] $
Смотрите Доказательство
Объяснение
--------------------------------------------------------------------------------
^ the beginning of the string
--------------------------------------------------------------------------------
http 'http'
--------------------------------------------------------------------------------
s? 's' (optional (matching the most amount
possible))
--------------------------------------------------------------------------------
: ':'
--------------------------------------------------------------------------------
/ '/'
--------------------------------------------------------------------------------
/ '/'
--------------------------------------------------------------------------------
(?: group, but do not capture (optional
(matching the most amount possible)):
--------------------------------------------------------------------------------
.* any character except n (0 or more times
(matching the most amount possible))
--------------------------------------------------------------------------------
/ '/'
--------------------------------------------------------------------------------
)? end of grouping
--------------------------------------------------------------------------------
[^/.] any character except: '/', '.' (1 or more
times (matching the most amount possible))
--------------------------------------------------------------------------------
$ before an optional n, and the end of the
string
Комментарии:
1. Все ответы SO должны быть такими. Спасибо.
2. @LearnerFor-life полностью согласен, так приятно видеть подобные ответы!
Ответ №2:
Если вы уверены, что сопоставляете только URL-адреса, вы также можете изменить URL-адрес и использовать:
^w /
^
Только в начале (которое в данном случае является концом)w
Любой набор буквенно-цифровых символов, в котором есть хотя бы один/
Для сопоставления косой черты
Было бы что-то вроде этого в python:
re.search(r'^w /', url[::-1])
Если это не None
так, то url
заканчивается следующим образом: .../someword
.
ПРИМЕЧАНИЕ: это только в том случае, если вы уверены, что url
это действительно URL.