适用于Google Analytics目标的正则表达式

时间:2017-01-13 00:02:27

标签: regex google-analytics

我已经在Google Analytics问题上搜索了所有其他正则表达式,但我无法使用这些答案,因为这对我的问题非常具体。

我想设定一个目标,但使用Regex将其标记为目标IF字符串包含

  

/ client-thank-you / AND除了雇用之外的任何东西

所以换句话说

  

/ client-thank-you / hire不正确

     

/ client-thank-you / anything / else是正确的

2 个答案:

答案 0 :(得分:0)

以下每个正则表达式都将匹配包含/client-thank-you/且不包含hire的任何字符串,具体取决于您在哪里做出的假设"雇用"在字符串中。

解决方案

哪里可以"雇用"位于字符串?

<强> Anywhere的:

((?!hire).)*?/client-thank-you/((?!hire).)*

只关注&#34; / client-thank-you /&#34;:

.*?/client-thank-you/((?!hire).)*

只有紧跟在&#34; / client-thank-you /&#34;

之后
.*?/client-thank-you/(?!hire).*

注释

<强>优化

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

积极要求&#34;任何事情&#34;:

请注意,所有这些正则表达式都假定一个以&#34; / client-thank-you /&#34;结尾的字符串; (之后没有任何内容)是有效的。如果此假设不正确(即字符串.*/client-thank-you/$不匹配),则将每个正则表达式的尾随*更改为+。这也意味着您必须将第三个正则表达式的最后.*保留为.+(即不要对其进行优化)。

编辑:

由于GA使用非常有限的正则表达式版本(不包括外观),因此上述功能无效。如果没有其他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个不形成&#34;雇用&#34;的字符。它通过匹配必要的最少字符数来验证匹配是否是&#34;雇用&#34;也不能作为&#34;雇用&#34;的前缀。它考虑了行尾(例如&#34; hir&#34;如果之后没有其他内容则有效)。它匹配的字符都是有效字符,可以出现在RFC 3986中指定的URL的路径组件中。

您可以使用此正则表达式替换上面给出的任何解决方案中的每个((?!hire).)。例如:

.*?/client-thank-you/([-._~!$&'()*+,;=:@/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}$).*

这匹配任何包含&#34; / client-thank-you /&#34;的网址。但不是&#34; / client-thank-you / hire&#34;。

但是,请小心。 Doubled&#34; h将使这种解决方法失败(例如&#34; hhire&#34;)。但是,如果&#34;雇用&#34;只会遵循路径分隔符(即/hire/),那么这不应该是一个问题。

答案 1 :(得分:0)

如果您不能使用像Travis建议的前瞻,那么我建议将目标设置为触发事件而不是网页浏览。

如果您使用的是Google跟踪代码管理器,则可以编写更高级的正则表达式,或者至少为该事件设置阻止规则,以防止在页面URL中“雇用”时触发该规则。