包含一个词而不是另一个词的字符串的正则表达式

Chr*_*ahl 92 regex google-analytics regex-negation

我在Google Analytics中设置了一些目标,可以使用一些正则表达式帮助.

假设我有4个网址

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
Run Code Online (Sandbox Code Playgroud)

我想创建一个表达式,它将标识包含字符串selector = size但不包含details.cfm的任何URL

我知道要找到一个不包含其他字符串的字符串,我可以使用这个表达式:

(^((?!details.cfm).)*$)
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何添加selector = size部分.

任何帮助将不胜感激!

Kob*_*obi 129

这应该这样做:

^(?!.*details\.cfm).*selector=size.*$
Run Code Online (Sandbox Code Playgroud)

^.*selector=size.*$应该足够清楚.第一位(?!.*details.cfm)是负向前瞻:在匹配字符串之前,它检查字符串不包含"details.cfm"(前面有任意数量的字符).

  • 仅供参考,请访问http://www.regexr.com/以获得测试这些表达式的好方法. (8认同)

Tom*_*lak 5

^(?=.*selector=size)(?:(?!details\.cfm).)+$
Run Code Online (Sandbox Code Playgroud)

如果您的正则表达式引擎支持所有格量​​词(尽管我怀疑 Google Analytics 不支持),那么我想这对于大型输入集会表现更好:

^[^?]*+(?<!details\.cfm).*?selector=size.*$
Run Code Online (Sandbox Code Playgroud)