Требуется регулярное выражение для RTSP - PullRequest
0 голосов
/ 04 августа 2020

У меня нет глубоких знаний о регулярных выражениях. нужна помощь!

У меня есть следующий rtsp, и мне нужно разделить его

rtsp://user:password@google.com:554/ISAPI/streaming/channels/102

и следующее регулярное выражение

(rtsp):\/\/(?:([^\s^@\/]+?)[@])?([^\s\/:]+)(?:[:]([0-9]+))?([/\s(.*)])

Результат в 101regex

Full match  rtsp://user:password@google.com:554/
Group 1.    rtsp
Group 2.    user:password
Group 3.    google.com
Group 4.    554
Group 5.    / 
  1. В регулярном выражении я не могу разрешить символ @ в имени пользователя и пароле (группа 2).
  2. Все еще во второй группе rtsp может не иметь имени пользователя и пароля, и тогда группа будет пусто. Пример: rtsp: //google.com: 554 / ISAPI / streaming / channels / 102
  3. И, наконец, в группе 5 мне нужна остальная часть rtsp. Пример: / ISAPI / streaming / channels / 102

1 Ответ

0 голосов
/ 04 августа 2020

Это группа 2 для имени пользователя: пароль не может быть пустым, вы можете опустить необязательную группу без захвата вокруг него (?:...)?

Отрицательный класс символов не должен быть не жадным [^\s@/]+ как он не может передать символ @. (Обратите внимание, что [^\s^@\/] также не позволит сопоставить ^ и /)

Если вы хотите сопоставить «остаток» в группе 5, вы можете сопоставить /, за которым следует любой символ 0+ раз (\/.*)

Вам не нужно использовать квадратные скобки для @ и :

(rtsp):\/\/([^\s@/]+)@([^\s/:]+)(?::([0-9]+))?(\/.*)

Regex demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...