Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 用于谷歌分析目标的正则表达式_Regex_Google Analytics - Fatal编程技术网

Regex 用于谷歌分析目标的正则表达式

Regex 用于谷歌分析目标的正则表达式,regex,google-analytics,Regex,Google Analytics,我已经搜索了Google Analytics问题的所有其他正则表达式,但我无法使用这些答案,因为这是针对我的问题的 我想设置一个目标,但如果字符串包含,则使用正则表达式将其标记为目标 /客户:谢谢你/还有除了雇佣以外的任何事情 换句话说 /客户感谢/雇用不正确 /客户:谢谢你/任何事情/其他都是正确的 以下每个正则表达式都将匹配任何包含/client thanky you/且不包含hire的字符串,具体取决于您对“hire”在字符串中的位置所做的假设 解决方案 字符串中的“hire”在哪里 任

我已经搜索了Google Analytics问题的所有其他正则表达式,但我无法使用这些答案,因为这是针对我的问题的

我想设置一个目标,但如果字符串包含,则使用正则表达式将其标记为目标

/客户:谢谢你/还有除了雇佣以外的任何事情

换句话说

/客户感谢/雇用不正确

/客户:谢谢你/任何事情/其他都是正确的


以下每个正则表达式都将匹配任何包含
/client thanky you/
且不包含
hire
的字符串,具体取决于您对“hire”在字符串中的位置所做的假设


解决方案 字符串中的“hire”在哪里

任何地方:

((?!hire.)*?/客户谢谢/(?!hire.)*
仅遵循“/客户谢谢/”:

*?/客户谢谢/(?!雇佣)。)*
仅在“/客户谢谢/”之后立即执行:

*?/客户谢谢/(?!租用)*

笔记 优化:

每个正则表达式都将匹配整个字符串。如果您的工具允许您确定字符串是否包含子字符串匹配(而不是天真地尝试匹配整个字符串),那么您可以通过删除前导的
*?
来优化第二个和第三个正则表达式。同样,第三个正则表达式也可以通过删除尾部的
*
来进一步优化

积极要求“任何东西”:

注意,所有这些正则表达式都假定以“/client thanky you/”(后面没有任何内容)结尾的字符串是有效的。如果此假设不正确(即字符串
*/client thanky you/$
不匹配),则将每个正则表达式上的尾部
*
更改为
+
。这也意味着您必须将第三个正则表达式上的最后一个
*
作为
+
(即,不要将其优化掉)



编辑: 由于GA使用非常有限的regex版本(不包括lookaround),上述方法将不起作用。如果没有其他GA工具(单一正则表达式除外)可以满足您的需要,那么您可以使用以下工具作为最后的努力:

([-.!$&'()*+,;=:@/0-9A-Za-gi-z]| h[-.!$&'()*+,;=:@/0-9A-Za-hj-z]| hi[-.!$&'()*+,;=:@/0-9A-Za-qs-z]| hir[-.!$&'()*+,;=::@/0-9A-Za-df-z]|1,3)
并以展开形式仅用于说明:

(| | | |)
[-。!$&'()*+,;=:@/0-9A-Za-gi-z]h[-。!$&'()*+,;=:@/0-9A-Za-hj-z]hi[-。!$&'()*+,;=:@/0-9A-Za-qs-z]hir[-。。。!$&'()*+,;=:@/0-9A-Za-df-z]。{1,3}$
此正则表达式将匹配1-4个不构成“hire”的字符。它通过匹配验证匹配既不是“hire”也不能用作“hire”前缀所需的最小字符数来实现。它考虑到行尾(例如,如果后面没有其他内容,则“hir”有效)。它匹配的字符都是中指定的URL路径组件中可能出现的有效字符

使用此正则表达式的方法是将其替换为上述任何解决方案中的每个
(?!hire)。
。例如:

*?/client谢谢你/([-.!$&'()*+,;=:@/0-9A-Za-gi-z]| h[-.!$&'()*+,;=::@/0-9A-Za-hj-z]|嗨[-.!$&'()*+,;=:@/0-9A-Za-qs-z]| hir[-.!$&'()*+,=::::/0-9A-Za-df-z]。{1,*
这与包含“/client thanky you/”但不包含“/client thanky you/hire”的任何url匹配


不过,一定要小心。双倍的“h”将使此解决方案失败(例如“hhire”)。但是,如果“hire”只跟在路径分隔符后面(即
/hire/
),那么这应该不是问题。

如果你不能像Travis建议的那样使用前瞻,那么我建议将目标设置为在事件上触发,而不是在页面视图上触发


如果您使用的是Google Tag Manager,您将能够编写更高级的正则表达式,或者至少为事件设置阻止规则,以防止在页面URL中出现“hire”时触发事件

不幸的是,这不适用于GA,因为GA使用不同的正则表达式引擎,它(正式)不包含lookaheads。@nyun Blast。。。GA是否允许嵌套/链接基于正则表达式的过滤器?类似于
include if contains”/client thanky you/“
然后
exclude if contains”hire“
?@travis非常感谢您的回复,但正如纽恩指出的那样,这样做行不通。烦人的我还有别的想法吗test@JPStones见我之前的评论。GA允许您嵌套/链接/管道过滤器吗?嘿,这些是允许通配符含义的过滤器。匹配任何单个字符*匹配上一个项目的零个或多个+匹配上一个项目的一个或多个?匹配上一个项目的零个或一个()记住括号中的内容为项目[]匹配此列表中的一个项目-在列表中创建一个范围|或^匹配字段的开头$match to the field的结尾\escape上述任何一种方法都可以包括您知道将作为转换一部分的路径,然后将它们组合在一起:
/client谢谢/(包括|所有|可能的|路径)