【问题标题】:Regex for Google Analytics Goals谷歌分析目标的正则表达式
【发布时间】:2017-01-13 00:02:27
【问题描述】:

我已经搜索了有关 Google Analytics 问题的所有其他正则表达式,但我无法使用答案,因为这非常适合我的问题。

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

/client-thank-you/ 以及除了雇佣以外的任何东西

也就是说

/client-thank-you/hire 不正确

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

【问题讨论】:

  • 另一种方法是包含您知道将成为转化一部分的路径,然后将它们放在一起 or/client-thank-you/(include|all|the|possible|paths)

标签: regex google-analytics


【解决方案1】:

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


解决方案

“hire”在字符串中的什么位置?

任何地方:

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

仅遵循“/client-thank-you/”:

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

仅紧跟在“/client-thank-you/”之后:

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

注意事项

优化:

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

肯定需要“任何东西”:

请注意,所有这些正则表达式都假定以“/client-thank-you/”结尾的字符串(后面没有任何内容)是有效的。如果此假设不正确(即字符串 .*/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 个不构成“雇用”的字符。它通过匹配验证匹配既不是“雇用”也不能用作“雇用”前缀所需的最少字符数来做到这一点。它考虑了行尾(例如,如果“hir”之后没有其他内容,则它是有效的)。它匹配的字符都是可以出现在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}$).*

这匹配任何包含“/client-thank-you/”但不包含“/client-thank-you/hire”的网址。

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

【讨论】:

  • 很遗憾,这不适用于 GA,因为 GA 使用不同的正则表达式引擎,该引擎不(正式)包含前瞻。
  • @nyuen Blast... GA 是否允许嵌套/链接基于正则表达式的过滤器?像include if contains "/client-thank-you/" 然后exclude if contains "hire"
  • @travis 非常感谢您的回复,但正如 Nyuen 指出的那样,这不起作用。恼人的。我可以测试的任何其他想法
  • @JPstones 查看我之前的评论。 GA 是否允许您嵌套/链接/管道过滤器?
  • 嘿,这些是您被允许的过滤器通配符含义。匹配任何单个字符 * 匹配前一项的零个或多个 + 匹配前一项的一个或多个?匹配零或前一项 () 记住括号的内容,因为 item [] 匹配此列表中的一项 - 在列表中创建一个范围 |或 ^ 匹配到字段的开头 $ 匹配到字段的结尾 \ 转义上述任何一项
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多