Я настраиваю некоторые цели в Google Analytics и мог использовать немного справки regex.
Позволяет говорят, что у меня есть 4 URL
http://www.anydotcom.com/test/search.cfm?metric=blah&selector=size&value=1
http://www.anydotcom.com/test/search.cfm?metric=blah2&selector=style&value=1
http://www.anydotcom.com/test/search.cfm?metric=blah3&selector=size&value=1
http://www.anydotcom.com/test/details.cfm?metric=blah&selector=size&value=1
Я хочу создать выражение, которое определит любой URL, который содержит строку selector=size, но НЕ содержит details.cfm
Я знаю, что для нахождения строки, которая НЕ содержит другую строку, я могу использовать это выражение:
(^((?!details.cfm).)*$)
Но, я не уверен, как добавить в selector=size части.
Любая справка значительно ценилась бы!
Это должно сделать это:
^(?!.*details\.cfm).*selector=size.*$
^.*selector=size.*$
должно быть достаточно ясно. Первый бит, (?!.*details.cfm)
, является отрицательным предвосхищением: перед подбором строки он проверяет, что строка не содержит "details.cfm" (с любым количеством символов перед ним).
^(?=.*selector=size)(?:(?!details\.cfm).)+$
Если ваш механизм regex поддерживает позитивные квантификаторы (хотя я подозреваю, что Google Analytics этого не делает), то, полагаю, для больших входных наборов это будет работать лучше:
^[^?]*+(?<!details\.cfm).*?selector=size.*$
регулярное выражение может быть (синтаксис perl):
`/^[(^(?!.*details\.cfm).*selector=size.*)|(selector=size.*^(?!.*details\.cfm).*)]$/`