Google Analytics Regex - 无负向前瞻的替代方案

2024-02-14

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(使用前将#替换为@)

Google Analytics Regex - 无负向前瞻的替代方案 的相关文章

随机推荐

  • 将样式化的 pandas 数据框导出到 Excel

    我正在尝试使用以下脚本将时尚的数据框导出到 Excel 文件 import pandas as pd import numpy as np np random seed 24 df pd DataFrame A np linspace 1
  • PyCharm:为什么“音频”受到青睐?

    为什么audioop如果我想进口 请优先选择reverse 我的代码包含from django urls import reverse已经存在于许多文件中 为什么 PyCharm 不查看我的其他文件 然后将当前的第二个选项设为第一个选项 我
  • “目录名称无效。”等等,在Windows上使用rabbitmq-plugins

    我正在尝试通过以下方式让 RabbitMQ 在 Windows 10 上运行这些说明 http arcware net installing rabbitmq on windows 但是 当尝试通过 powershell 命令启用管理插件时
  • 使用 vue.js 获取调用元素

    我想获取 vue js 中调用 html 元素以通过 jQuery 修改它 现在 我为每个元素指定类名 索引 然后通过 jQuery 调用它 但这看起来像是一个疯狂的 hack 我想做的事 new Vue el app data testF
  • 为什么中序和前序遍历对于创建算法来确定 T2 是否是 T1 的子树很有用

    我正在看一本采访书 问题是 你有两个非常大的二叉树 T1 拥有数百万个节点 并且T2 有数百个节点 创建一个算法来决定是否T2是一个 的子树T1 作者提到这是一个可能的解决方案 请注意 这里的问题指定T1有数百万 节点 这意味着我们应该注意
  • 无法从 NGINX 获取包含句点的标头

    标题 Abp TenantId is null因为 如果删除 like AbpTenantId 一切都会安好的 如何添加标题 localhost debug 显示临时标头 根据客户请求显示 Request Headers Unknown 在
  • Material UI 网格列表行有一个很大的尴尬间隙

    我正在使用 Material UI 和 Reactjs 我对网格列表组件有疑问 我尝试使用网格 1000x1000px 因此我将自定义 gridList 样式中的高度和宽度分别指定为 1000 和 1000 如文档中所示 应有 10 列 每
  • 在多个节点上运行kafka connect分布式模式

    我正在测试一个卡夫卡连接器的弹性 我想在它运行时杀死一个工作人员 从而杀死连接器实例 最简单的方法可能是强制分布式模式在多个节点上运行 然后终止该节点上的工作进程 对吗 如何使 Kafka 将生成工作程序连接到不仅仅是其启动的节点上 这是在
  • 如何调试 Mac OS X 上的互斥锁问题?

    我正在尝试让 gdb lldb 存根为我正在制作的程序工作 现在它似乎使调试器陷入僵局 所以我 讽刺的是 在我的机器上调试 lldb 以尝试找出问题所在 lldb 正在尝试锁定互斥体 并且似乎陷入僵局 在 Windows 上 我知道你可以使
  • java连接到sql server 2008express

    我尝试连接到我的 BD 这是我的代码 public class JavaSQLTest param args the command line arguments public static void main String args tr
  • 运行scala代码jar出现NoSuchMethodError:scala.Predef$.refArrayOps

    我的代码在idea中通过本地模式可以正常运行 当我打印成jar包上传到我部署的SPARK服务器上运行时 出现NoSuchMethodError scala 预定义 refArrayOps 出现了 出错的那行代码如下val expectArr
  • 单元测试应该涵盖压力测试吗?

    我想知道你们是否有任何好的读物来考虑将什么分类为单元测试 验收 集成测试 我有以下场景 我们在工作中就是否应该在单元测试中进行了一些辩论 在我们的数据访问层 有些语句使用了sql比如 select from people where id
  • 使用 C# 发送 Outlook 会议请求

    我希望从 C 发送 Outlook 会议请求 我有下面的代码 它可以完成这项工作 但是 string startTime1 Convert ToDateTime startTime ToString yyyyMMddTHHmmssZ str
  • 方法调用可能会产生 java NullpointerException

    我有一个代码 public String getNameUpdateEvent long id Cursor mCursor db rawQuery select name from events WHERE id id null if m
  • 带模板参数的 C++ 函数调度

    我正在重构一个大类 我们称之为Big 有大量的复制粘贴代码 大部分复制粘贴代码存在于switch case只有涉及的类型最终不同 该代码是基于一个切换enum类的成员变量 其值仅在运行时才知道 我尝试解决这个问题需要有一个Dispatche
  • Azure Pipelines DotNetCoreCLI - .Net Core SDK 生命周期结束

    我在 Azure CI 管道中收到错误 尝试运行 DotNetCoreCLI 时restore task 已经报废了几个小时的网络无济于事 相关问题没有解决方案可以帮助我理解问题 基本上 我们已经在存储库中添加了一个新项目 该项目需要运行
  • 大整数的按位运算

    我正在实现 BER 压缩整数的解码 最近我发现了与大整数按位运算相关的奇怪 JavaScript 行为 E g var a 17516032 has 25 bits alert a lt lt 7 outputs 2052915200 al
  • 哪些 x86 C++ 编译器本身是多线程的?

    现在 几乎每个用户在台式机上 以及大量笔记本电脑上 都拥有 2 或 4 个核心 高级用户拥有 6 12 个 AMD 或 i7 核心 哪些 x86 x86 64 C C 编译器可以使用多个线程进行编译 已经有一个 make j N 类似的解决
  • 我使用的是哪个版本的 python time 模块

    如何确定安装了哪个版本的 python 模块 time 对于其他模块 version version or version 工作 但是时间上 这两种方法都会返回错误 模块 对象没有属性 version 或 版本 Module time内置于
  • Google Analytics Regex - 无负向前瞻的替代方案

    Google Analytics 分析 在其过滤器中不再允许负向前瞻 事实证明 创建仅包含我希望包含的链接的自定义报告非常困难 包含负向前瞻的正则表达式在启用时可以工作 test com index php s 这匹配 test com t