eis*_*iso 6 regex google-analytics
Google Analytics不再允许在其过滤器中使用否定前瞻功能.事实证明,创建自定义报告非常困难,只包括我希望包含的链接.
包含负向前瞻的正则表达式如果启用它将起作用:
test.com(\/\??index\_(.*)\.php\??(.*)|\/\?(.*)|\/|)+(\s)*(?!.)
Run Code Online (Sandbox Code Playgroud)
匹配:
test.com
test.com/
test.com/index_fb2.php
test.com/index_fb2.php?ref=23
test.com/index_fb2.php?ref=23&e=35
test.com/?ref=23
test.com/?ref=23&e=35
Run Code Online (Sandbox Code Playgroud)
并且不匹配(应该如此):
test.com/ambassadors
test.com/admin/?signup=true
test.com/randomtext/
Run Code Online (Sandbox Code Playgroud)
我正在寻找如何调整我的正则表达式仍然保持相同的匹配,但没有使用负前瞻.
谢谢!
Google Analytics 似乎不支持单行和多行模式,这对我来说很有意义。URL 不能包含换行符,因此如果点与它们不匹配也没关系,并且除了整个字符串的开头和结尾之外,不需要匹配^任何地方。$
这意味着正则(?!.)表达式中的 完全等同于$,它仅在字符串的最末尾匹配(例如\z,在支持它的风格中)。由于这是正则表达式中唯一的前瞻,因此您永远不应该遇到此问题;你应该$一直在使用。
但是,您的正则表达式还有其他问题,主要是由于过度依赖(.*). 例如,它匹配这些字符串:
test.com/?^#(%)!*%supercalifragilisticexpialidocious
test.com/index_ecky-ecky-ecky-ecky-PTANG!-vroop-boing_rowr.php (ni! shh!)
Run Code Online (Sandbox Code Playgroud)
...我很确定你不想要。:P
试试这个正则表达式:
test\.com(?:/(?:index_\w+\.php)?(?:\?ref=\d+(?:&e=\d+)?)?)?\s*$
Run Code Online (Sandbox Code Playgroud)
或更易读:
test\.com
(?:
/
(?:index_\w+\.php)?
(?:
\?ref=\d+
(?:
&e=\d+
)?
)?
)?
\s*$
Run Code Online (Sandbox Code Playgroud)
出于说明目的,我对(例如)可以出现哪些参数、它们出现的顺序以及它们的值可以是什么进行了很多简化的假设。我还想知道是否真的有必要匹配域(test.com)。我没有使用 Google Analytics 的经验,但是匹配不应该在域名之后立即开始(并锚定)吗?你真的必须在末尾留出空格吗?在我看来,正则表达式应该更像这样:
^/(?:index_\w+\.php)?(?:\?ref=\d+(?:&e=\d+)?)?$
Run Code Online (Sandbox Code Playgroud)