RegEx соответствуют строкам с более чем 5 слешами - PullRequest
0 голосов
/ 01 июля 2018

Мне нужно найти URL с более чем 5 косыми чертами и игнорировать косую черту.

Как матч

https://www.url.com/cat1/cat2/cat3/cat4/

Не соответствует

https://www.url.com/cat1/cat2/cat3/

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Предполагая, что ваш исходный текст содержит только один URL и больше ничего нельзя использовать:

^((?:[^\/]*\/){6,}[^\/]+)\/?$

Описание:

  • ^ - начало строки.
  • ( - Начало группы захвата, содержащей:
    • (?: - запуск группы без захвата, необходимой из-за квантификатор после него.
    • [^\/]*\/ - последовательность символов, отличных от / (возможно, пустая) и /.
    • ){6,} - должен быть конец группы без захвата, 6 или больше раз.
    • [^\/]+ - последовательность символов, отличных от /, на этот раз непустая.
  • ) - Конец группы захвата.
  • \/? - косая черта (если есть).
  • $ - конец строки.

Все совпадение содержит весь URL, а группа захвата содержит что вас на самом деле интересует - URL без трейлинг косая черта (если есть).

0 голосов
/ 01 июля 2018

Этот делает работу:

^(?:[^/\r\n]*/){6,}[^/\r\n]+

Пояснение:

^               : beginning of line
  (?:           : start non capture group
    [^/\r\n]*   : 0 or more any character that is not a slash or a linebreak
    /           : 1 slash
  ){6,}         : end group, must appear 6 or more times
  [^/\r\n]+     : 1 or more any character that is not a slash or a linebreak
...