排除所有以" / screens"开头的网页除了" / screens / company-setup-details"在Google Analytics细分中过滤

时间:2015-02-26 02:24:01

标签: regex google-analytics analytics

我一直在寻找与我相似的几个问题,但似乎无法解决这个问题。正如标题所暗示的,我需要解决以下问题:

排除以“/ screens”开头的所有页面,除了“/ screens / company-setup-details”。

到目前为止,我试图在http://regexr.com上构建这个,但没有运气。我觉得这很容易解决,但我很难搞清楚这种广泛的排斥和轻微的包容。

我想补充一点,其中的一些例子是:“/ screens / home”,“/ screens / login”和“/ screens / embed-setup”。

1 个答案:

答案 0 :(得分:0)

^/(?!screens(?!/company-setup-details))

排除以/screens开头的所有路径,除非后面跟/company-setup-details

说明:这是双重否定逻辑。对于“通过”(即不匹配)的第一个否定前瞻,那么其内部的负向前瞻也必须通过(不匹配)。

请注意,上面的表达式将匹配:

  • /screens
  • 之外的所有路径
  • /screens/company-setup-details
  • 开头的所有路径

相反,如果您只想匹配忽略的路径,请使用:

^/(screens(?!/company-setup-details))

更新:GA regexps自2009年以来不再支持负面预测,因此上面的表达式无效。这是一个丑陋的黑客应该做的工作:

^/(?:(?:[^s]|$)|s(?:[^c]|$)|sc(?:[^r]|$)|scr(?:[^e]|$)|scre(?:[^e]|$)|scree(?:[^n]|$)|screen(?:[^s]|$)|screens/company-setup-details)

Regexr

如果您不介意排除screens的前导子串的路径(例如,如果整个路径为/scr/scree),那么您可以稍微简化正则表达式:

^/(?:[^s]|s[^c]|sc[^r]|scr[^e]|scre[^e]|scree[^n]|screen[^s]|screens/company-setup-details)

Regexr

FWIW我使用此JavaScript代码生成了否定部分:

var str = '';
var ret = '';
'screens'.split('').forEach(function(c) {
    ret += (ret ? '|' : '') + str + '(?:[^' + c + ']|$)';
    str += c;
});
'(?:' + ret + ')';