Google Analytics(分析)在其过滤器中不再允许负向前瞻。事实证明,创建仅包含我希望包含的链接的自定义报告非常困难。
包含负向前瞻的正则表达式在启用时可以工作:
test.com(\/\??index\_(.*)\.php\??(.*)|\/\?(.*)|\/|)+(\s)*(?!.)
这匹配:
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
并且不匹配(应该如此):
test.com/ambassadors
test.com/admin/?signup=true
test.com/randomtext/
我正在寻找如何调整我的正则表达式以仍然保持相同的匹配,但不使用负向前瞻。
谢谢你!
Google Analytics 似乎不支持单行和多行模式,这对我来说很有意义。 URL 不能包含换行符,因此即使点与它们不匹配也没关系,并且永远不需要^
and $
匹配除整个字符串的开头和结尾之外的任何位置。
这意味着(?!.)
在你的正则表达式中完全等同于$
,仅在字符串的最末尾匹配(例如\z
,以支持它的口味)。由于这是正则表达式中唯一的前瞻,因此您永远不应该遇到此问题;你应该一直在使用$
一直。
但是,您的正则表达式还有其他问题,主要是由于过度依赖(.*)
。例如,它匹配这些字符串:
test.com/?^#(%)!*%supercalifragilisticexpialidocious
test.com/index_ecky-ecky-ecky-ecky-PTANG!-vroop-boing_rowr.php (ni! shh!)
...我很确定你不想要。 :P
试试这个正则表达式:
test\.com(?:/(?:index_\w+\.php)?(?:\?ref=\d+(?:&e=\d+)?)?)?\s*$
或更易读:
test\.com
(?:
/
(?:index_\w+\.php)?
(?:
\?ref=\d+
(?:
&e=\d+
)?
)?
)?
\s*$
出于说明目的,我对(例如)可以出现哪些参数、它们出现的顺序以及它们的值可以是什么做出了很多简化的假设。我还想知道是否真的有必要匹配域名(test.com
)。我没有使用 Google Analytics 的经验,但比赛不应该正确开始(并锚定)吗after领域?你真的必须在末尾留出空格吗?在我看来,正则表达式应该更像这样:
^/(?:index_\w+\.php)?(?:\?ref=\d+(?:&e=\d+)?)?$
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)