在 Google 分析段过滤中排除所有以“/screens”开头的页面,EXCEPT“/screens/company-setup-details”
Exclude all pages that begin with "/screens" EXCEPT "/screens/company-setup-details" in Google Analytics Segment filtering
我一直在研究与我的平行的几个问题,但似乎无法弄清楚这一点。如标题所示,我需要解决以下问题:
排除所有以“/screens”开头的页面,除了“/screens/company-setup-details”。
我已经尝试在 http://regexr.com 上构建它,但到目前为止没有成功。我觉得这很容易解决,但我很难弄清楚广泛排除和次要包含。
我想补充一点,其中的一些示例是:“/screens/home”、“/screens/login”和“/screens/embed-setup”。
^/(?!screens(?!/company-setup-details))
排除所有以 /screens
开头的路径,除非其后跟 /company-setup-details
。
解释:是双重否定逻辑。对于"pass"的第一个否定前瞻(即不匹配),那么它内部的否定前瞻也必须通过(不匹配)。
注意上面的表达式将匹配:
- 除了以
/screens
开头的路径之外的所有路径
- 以
/screens/company-setup-details
开头的所有路径
如果您只想匹配忽略的路径,则使用:
^/(screens(?!/company-setup-details))
更新: GA 正则表达式自 2009 年起不再支持负前瞻,因此我上面的表达式将不起作用。不过,这里有一个丑陋的 hack 应该可以完成这项工作:
^/(?:(?:[^s]|$)|s(?:[^c]|$)|sc(?:[^r]|$)|scr(?:[^e]|$)|scre(?:[^e]|$)|scree(?:[^n]|$)|screen(?:[^s]|$)|screens/company-setup-details)
如果您不介意排除作为 screens
前导子字符串的路径(例如,如果整个路径是 /scr
或 /scree
),那么您可以简化正则表达式 a位:
^/(?:[^s]|s[^c]|sc[^r]|scr[^e]|scre[^e]|scree[^n]|screen[^s]|screens/company-setup-details)
FWIW 我使用这个 JavaScript 代码生成了否定部分:
var str = '';
var ret = '';
'screens'.split('').forEach(function(c) {
ret += (ret ? '|' : '') + str + '(?:[^' + c + ']|$)';
str += c;
});
'(?:' + ret + ')';
我一直在研究与我的平行的几个问题,但似乎无法弄清楚这一点。如标题所示,我需要解决以下问题:
排除所有以“/screens”开头的页面,除了“/screens/company-setup-details”。
我已经尝试在 http://regexr.com 上构建它,但到目前为止没有成功。我觉得这很容易解决,但我很难弄清楚广泛排除和次要包含。
我想补充一点,其中的一些示例是:“/screens/home”、“/screens/login”和“/screens/embed-setup”。
^/(?!screens(?!/company-setup-details))
排除所有以 /screens
开头的路径,除非其后跟 /company-setup-details
。
解释:是双重否定逻辑。对于"pass"的第一个否定前瞻(即不匹配),那么它内部的否定前瞻也必须通过(不匹配)。
注意上面的表达式将匹配:
- 除了以
/screens
开头的路径之外的所有路径
- 以
/screens/company-setup-details
开头的所有路径
如果您只想匹配忽略的路径,则使用:
^/(screens(?!/company-setup-details))
更新: GA 正则表达式自 2009 年起不再支持负前瞻,因此我上面的表达式将不起作用。不过,这里有一个丑陋的 hack 应该可以完成这项工作:
^/(?:(?:[^s]|$)|s(?:[^c]|$)|sc(?:[^r]|$)|scr(?:[^e]|$)|scre(?:[^e]|$)|scree(?:[^n]|$)|screen(?:[^s]|$)|screens/company-setup-details)
如果您不介意排除作为 screens
前导子字符串的路径(例如,如果整个路径是 /scr
或 /scree
),那么您可以简化正则表达式 a位:
^/(?:[^s]|s[^c]|sc[^r]|scr[^e]|scre[^e]|scree[^n]|screen[^s]|screens/company-setup-details)
FWIW 我使用这个 JavaScript 代码生成了否定部分:
var str = '';
var ret = '';
'screens'.split('').forEach(function(c) {
ret += (ret ? '|' : '') + str + '(?:[^' + c + ']|$)';
str += c;
});
'(?:' + ret + ')';