我正在跟踪某些网址的点击次数,只需要跟踪那些不包含“亚马逊”或“易趣”字样的网址
例如,我想跟踪此
http://www.website.co.uk/out?prov=tesco*
http://www.website.co.uk/out?prov=asda*
http://www.website.co.uk/out?prov=youtube*
但不是这个
http://www.website.co.uk/out?prov=amazon*
或
http://www.website.co.uk/out?prov=ebay*
我如何接近正则表达式?
网址末尾的星标是因为每个网址都有不同的参数
答案 0 :(得分:0)
你可以使用下面的正则表达式来匹配网址,除了包含亚马逊或ebay的网址,
http:\/\/www(?!.*amazon|.*ebay).*
OR
http:\/\/www(?!(?:.*amazon|.*ebay)).*
答案 1 :(得分:0)
由于您没有使用您正在使用的语言,因此我会假设Perl用于答案。在这里你想要使用类似的东西:
if ($url !~ /prov=amazon/i and
$url !~ /prov=ebay/i) {
do_stuff();
}
答案 2 :(得分:0)
否定前瞻
只需在正则表达式的头部添加一个负向前瞻:
(?!.*(?:amazon|ebay))
此断言:在字符串中的此位置,后面的内容不是某些字符,而是amazon
或ebay
。
使用您的语言或引擎所需的任何语法来区分大小写,例如:
(?i)(?!.*(?:amazon|ebay))
一个跟踪所有人的正则表达式
跟踪您的三种模式的一个正则表达式可能是:
(?i)^(?!.*(?:amazon|ebay))http://website\.co\.uk/out\?prov=(?:tesco|asda|youtube)\S*$
请参阅demo。
最终的正则表达式取决于实现上下文。
<强>参考强>