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


Answers

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

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

我在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的 URL

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

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

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

任何帮助将不胜感激!




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

我原来的命令:

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

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

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