包含一个单词而不是另一个单词的string的正则expression式

我在Google Analytics中设定了一些目标,并可以使用一些正则expression式帮助。

可以说我有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 

我想要创build一个expression式来识别任何包含stringselector = size但不包含details.cfm的 URL

我知道find一个不包含其他string的string我可以使用这个expression式:

 (^((?!details.cfm).)*$) 

但是,我不知道如何添加在select器=大小的部分。

任何帮助将不胜感激!

这应该做到这一点:

 ^(?!.*details\.cfm).*selector=size.*$ 

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

正则expression式可能是(perl语法):

 `/^[(^(?!.*details\.cfm).*selector=size.*)|(selector=size.*^(?!.*details\.cfm).*)]$/` 
 ^(?=.*selector=size)(?:(?!details\.cfm).)+$ 

如果您的正则expression式引擎支持posessive量词(虽然我怀疑谷歌分析不),那么我想这将更好的大input集:

 ^[^?]*+(?<!details\.cfm).*?selector=size.*$ 

我正在寻找一种方法来避免在OP和Kobi的解决scheme对我来说非常适合的情况下在尾部进行线路缓冲。 在我的情况下,排除包含“/”(用于我的根文档)的“bot”或“spider”的行。

我原来的命令:

 tail -f mylogfile | grep --line-buffered -v 'bot\|spider' | grep ' / ' 

现在变成(用“-P”perl开关):

 tail -f mylogfile | grep -P '^(?!.*(bot|spider)).*\s\/\s.*$' 

简单的方法是通过执行以下操作来指定string的0个实例

 (string_to_exclude){0}