Regexp - выбрать все до 3-го слеша - PullRequest
0 голосов
/ 06 мая 2019

Что будет самым простым регулярным выражением, выбирая все до 3-го слеша

Я пробовал это:

([^\/?#]+){3}(?:.*?\/)

Но это не работает точно так, как я надеюсь, что это будет работать. Более того, я не знаю, что это будет работать в Google Analytics (раздел фильтра)

Ответы [ 3 ]

1 голос
/ 06 мая 2019

Вместо этого вы можете повторить сопоставление 2 раза, а не косую черту, а затем косую черту.

^(?:[^\/]*\/){2}[^\/]+

См. Демонстрацию regex

ЕслиВы не хотите соответствовать ?#, вы можете добавить это к классу персонажей

^(?:[^\/?#]*\/){2}[^\/]+

О вашем шаблоне

Эта часть вашего шаблона ([^\/?#]+){3} захватывает в группе соответствия 1+ раз любой символ, который не входит в класс символов, но после этого повторения не учитывает косую черту.

Тогда (?:.*?\/) будет соответствовать любому символу, не являющемуся жадным, с последующим косой чертой.

0 голосов
/ 06 мая 2019

Вы можете использовать это регулярное выражение:

^([^\/]*\/){2}[^\/]*

Example

0 голосов
/ 06 мая 2019

В своем комментарии вы приводите три примера: /, /news/ и /news/details/.Основываясь на этих примерах, вот решение:

^(\/[^\/]*){1,2}\/?

Он говорит: с начала строки соответствует следующее:

  • косая черта,затем ноль или более не косых черт
  • , за которыми необязательно следует вторая косая черта, плюс ноль или более не косых черт
  • , за которыми необязательно следует окончательная косая черта

test-output

...