Как завершить строку с $ непосредственно после. * С помощью RegEx? - PullRequest
1 голос
/ 11 июня 2019

Я пытаюсь сообщить о наборе URL-адресов, который перехватывает все потенциальные параметры URL-адреса, и у меня возникла проблема с правильным определением RegEx.

У нас есть этот RegEx для захвата нескольких вариантов наших URL-адресов.чтобы подать в нашу отчетность, но мне нужно иметь возможность завершить строку с $, но когда я это сделаю, он не показывает никаких результатов.

RegEx:

/join/$|/join/\?product.*|/join/\.*

Для другого аккаунта мы используем только один вариант, который описан ниже (который работает):

^/join/$

Я считаю, что проблема заключается в том, что после \?product.*,Я не заканчиваю строку (и даже не начинаю ее).

До сих пор я пытался: ^/join/$|(^[/join/\?product.*]$)|(^[/join/\.*]$) без удачи.

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Если вы хотите сопоставить знак доллара буквально, вы должны его избежать \$, иначе это будет означать привязку для подтверждения конца строки / строки.

Этот шаблон ^/join/$, следовательно, будет соответствовать только /join/

В вашем паттерне вы используете чередование, в котором последняя часть /join/\.* будет соответствовать /join/, но также и /join/....., поскольку при выходе из точки вы будете сопоставлять ее буквально, а квантификатор * повторяется 0+ раз.

Возможно, вы ищете:

^/join/(?:\?product.*\$)?$

Это будет соответствовать /join/, за которым следует необязательная часть (?:\?product.*\$)?, которая будет соответствовать? Product, сопровождаемая любым символом 0+ раз и закончится на $.

Regex demo

0 голосов
/ 11 июня 2019

Пожалуйста, сделайте шаблон lazy, а $ - это специальный символ для регулярных выражений, поэтому вам нужно избегать этого. (Что касается экранирования, Google Analytics может следовать чему-то другому.) [] используется для захвата a character в диапазоне, будьте осторожны с этим, так как вы пытаетесь захватить группу, я думаю.

\? Продукт. *? \ $

...