我在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
我想创建一个表达式,用于标识包含字符串 selector = size 的任何网址,但不包含 details.cfm
我知道要找到一个不包含其他字符串的字符串,我可以使用这个表达式:
(^((?!details.cfm).)*$)
但是,我不确定如何添加 selector = size 部分。
非常感谢任何帮助!
答案 0 :(得分:114)
这应该这样做:
^(?!.*details\.cfm).*selector=size.*$
^.*selector=size.*$
应该足够明确。第一位(?!.*details.cfm)
是否定前瞻:在匹配字符串之前,它检查字符串不包含“details.cfm”(前面有任意数量的字符)。
答案 1 :(得分:5)
正则表达式可能是(perl语法):
`/^[(^(?!.*details\.cfm).*selector=size.*)|(selector=size.*^(?!.*details\.cfm).*)]$/`
答案 2 :(得分:1)
^(?=.*selector=size)(?:(?!details\.cfm).)+$
如果你的正则表达式引擎支持大量量词(虽然我怀疑谷歌分析没有),那么我想这对于大型输入集会表现更好:
^[^?]*+(?<!details\.cfm).*?selector=size.*$
答案 3 :(得分:1)
接受的答案中的正则表达式有问题。它Pathlib
abcselector=size
、selector=sizeabc
等
正确的正则表达式可以是 ^(?!.*\bdetails\.cfm\b).*\bselector=size\b.*$
对 also matches 处正则表达式的解释:
答案 4 :(得分:0)
我正在寻找一种方法来避免在线路上缓冲 - 在OP和Kobi的解决方案对我来说非常适合的类似情况下缓冲。在我的情况下,排除使用&#34; bot&#34;或者&#34;蜘蛛&#34;同时包括&#39; /&#39; (对于我的根文档)。
我的原始命令:
tail -f mylogfile | grep --line-buffered -v 'bot\|spider' | grep ' / '
现在变为(使用&#34; -P&#34; perl开关):
tail -f mylogfile | grep -P '^(?!.*(bot|spider)).*\s\/\s.*$'
答案 5 :(得分:-4)
执行此操作的简单方法是通过执行以下操作指定字符串的0个实例
(string_to_exclude){0}