正则表达式回溯引发的生产惨案

2023-11-10

背景

业务上的一个字段在解析时为了避免脏数据导致后续ETL的异常,决定从源头将该字段严格按照设计的规则去匹配。该字段的上传是设备端传上来的文件中的一个字段。
正向?反向?

问题

业务中有这么一个正则表达式
在这里插入图片描述

上线后大概四个小时候用户反馈出现问题。

也就是说并不是所有的id都匹配不到,是偶发的。所以比较隐蔽。发现问题之后立即进行了退版操作。

正则如下
大家可以在这里测试测试。
regex101 测试地址

有几个id匹配不到,可实际上应该匹配到。

原因分析

这个正则匹配到这一步为啥会从头开始匹配?
在这里插入图片描述
使用regex101 debug mode 时,发现在匹配最后一个真这个块时发生了 pattern backtrack indicator。

没错是发生了回溯。回溯之后就匹配不到了。
为什么会发生回溯呢?

如何解决?

chatgpt 3.5

在这里插入图片描述

GP4的表现

在这里插入图片描述

未完待续

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正则表达式回溯引发的生产惨案 的相关文章

  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • Linux 上的静态 Qt5 构建:部署时如何处理字体?

    我使用这些配置选项创建了 Qt 5 2 0 库的静态版本 Ubuntu 12 04 开源 确认许可 force pkg config 发布 静止的 前缀 home juzzlin qt5 无icu opengl桌面 无油嘴滑舌 辅助功能 n
  • 无需超级用户即可在 Linux 中打开 RAW 套接字

    我必须编写一个在 Linux 上运行的 ping 函数 语言是 C 所以 C 也可以 在网上搜索并查看源代码ping命令 事实证明我应该创建一个原始套接字 icmp sock socket AF INET SOCK RAW IPPROTO
  • 添加文件时运行 shell 命令

    我的 Linux 机器上有一个名为 images 的文件夹 该文件夹连接到一个网站 该网站的管理员可以向该网站添加图片 但是 当添加图片时 我想要一个命令来运行调整目录中所有图片的大小 简而言之 我想知道当新文件添加到特定位置时如何使服务器
  • 如何获取 (Linux) 机器的 IP 地址?

    这个问题和之前问的几乎一样如何获取本地计算机的IP地址 https stackoverflow com questions 122208 get the ip address of local computer 问题 但是我需要找到一个的I
  • 使用 MAX_ORDER / 包含 mmzone.h

    根据https www kernel org doc Documentation networking packet mmap txt https www kernel org doc Documentation networking pa
  • 如何使用waf构建共享库?

    我想使用构建一个共享库waf http code google com p waf 因为它看起来比 GNU 自动工具更容易 更简洁 到目前为止 我实际上有几个与我开始编写的 wscript 有关的问题 VERSION 0 0 1 APPNA
  • 错误:“rjags”的包或命名空间加载失败

    在终端的 conda 环境之一中 我能够成功安装包 rjags 但是 当我在该环境中运行 R 并运行库 rjags 时 出现以下错误 加载所需的包 coda 错误 rjags 的包或命名空间加载失败 rjags 的 loadNamespac
  • 在生产服务器上使用 Subversion 使文件生效的最佳方法是什么?

    目前我已经设置了 subversion 这样当我在 Eclipse PDT 中进行更改时 我可以提交更改 它们将保存在 home administrator 中项目文件 该文件具有 subversion 推荐的 branches tags
  • 如何查找哪个 Yocto 项目配方填充图像根文件系统上的特定文件

    我经常与 Yocto 项目合作 一个常见的挑战是确定文件为何 或来自什么配方 包含在 rootfs 中 这有望从构建系统的环境 日志和元数据中得出 理想情况下 一组命令将允许将文件链接回源 即配方 我通常的策略是对元数据执行搜索 例如gre
  • 绕过 dev/urandom|random 进行测试

    我想编写一个功能测试用例 用已知的随机数值来测试程序 我已经在单元测试期间用模拟对其进行了测试 但我也希望用于功能测试 当然不是全部 最简单的方法是什么 dev urandom仅覆盖一个进程 有没有办法做类似的事情chroot对于单个文件并
  • Linux 为一组进程保留一个处理器(动态)

    有没有办法将处理器排除在正常调度之外 也就是说 使用sched setaffinity我可以指示线程应该在哪个处理器上运行 但我正在寻找相反的情况 也就是说 我想从正常调度中排除给定的处理器 以便只有已明确调度的进程才能在那里运行 我还知道
  • 如何使用Android获取Linux内核的版本?

    如何在 Android 应用程序中获取 Linux 内核的版本 不是 100 确定 但我认为调用 uname r 需要 root 访问权限 无论如何 有一种不太肮脏的方法可以做到这一点 那就是 System getProperty os v
  • 使用 gdb 调试 Linux 内核模块

    我想知道 API 在内核模块 中返回什么 从几种形式可以知道 这并不是那么简单 我们需要加载符号表来调试内核模块 所以我所做的就是 1 尝试找到内核模块的 text bss和 data段地址 2 在 gdb 中使用 add symbol f
  • Apache 访问 Linux 中的 NTFS 链接文件夹

    在 Debian jessie 中使用 Apache2 PHP 当我想在 Apache 的文档文件夹 var www 中创建一个新的小节时 我只需创建一个指向我的 php 文件所在的外部文件夹的链接 然后只需更改该文件夹的所有者和权限文件夹
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • 如何wget目录中最新的文件

    我想编写一个 bash 脚本来下载并安装最新的每日构建程序 RStudio 是否有可能使wget仅下载目录中最新的文件http www rstudio org download daily desktop http www rstudio
  • 从核心转储中获取堆栈跟踪

    如何从核心转储文件中获取堆栈跟踪 该文件大约 14 mb 是在我的应用程序退出并显示 分段错误 后生成的 我使用的是红帽 5 5 gdb usr bin myapp binary corefile 然后 使用以下之一 gdb bt gdb

随机推荐

  • javaScript的Math数学对象 --用法大全

    Math是 JavaScript 的原生对象 提供各种数学功能 该对象不是构造函数 不能生成实例 所有的属性和方法都必须在Math对象上调用 简而言之就如同java的静态类一样 都是通过类名 方法名 调用的 Math对象的用法大致可以分为
  • 【Sqli-Labs-Master】Less-5 (报错注入)

    Less5 单引号的注入 id 1 报错 id 1 23 尝试闭合 成功回显 看到这个报错信息 基本就行布尔型盲注 报错型注入 时间延迟型盲注 UNION联合查询型注入应该是不能用了 查看源代码 sql SELECT FROM users
  • samba Error NT_STATUS_CONNECTION_REFUSED Failed to connect with SMB1 -- no workgroup available

    连接同事的共享服务时报错 smbclient L ip U user WARNING The syslog option is deprecated Enter WORKGROUP administrator s password Shar
  • invalid stream header问题的解决

    今天调试一个http接口 调用端代码如下 URL url new URL http www AAA com HttpURLConnection connection HttpURLConnection url openConnection
  • Collections.sort方法对list排序的两种方式

    Collections sort 分为两部分 一部分为排序规则 一部分为排序算法 规则用来判断对象 算法则考虑如何进行排序 对于自定义对象 sort 不知道规则 所以无法比较 这种情况下一定要定义排序规则 方式有两种 第一种 java la
  • Raid0、 Raid1、 Raid5、 Raid10的原理、特点、性能区别

    一 RAID 是什么 RAID Redundant Array of Independent Disks 即独立磁盘冗余阵列 简称为 磁盘阵列 其实就是用多个独立的磁盘组成在一起形成一个大的磁盘系统 从而实现比单块磁盘更好的存储性能和更高的
  • 浏览器的渲染原理

    引言 在我们的日常生活中 互联网已经不可或缺 而游览器 就像是我们浏览这个数字世界的窗口 成为我们与互联网交流的必备工具 有时候 你是否被一些页面无法正确显示 或者响应缓慢等情况困扰过 这就需要我们理解浏览器的 大脑 内核 及其如何将代码渲
  • 机器学习识别身份证信息代码

    用机器学习识别身份证信息需要一些步骤 收集身份证图像数据并打标签 使用深度学习模型 如卷积神经网络 训练识别模型 使用OpenCV等图像处理库对身份证图像进行预处理 以便模型能够识别 使用模型对身份证图像进行预测 并获取身份证信息 但是这里
  • java 跨域问题

    今天看到了一个解决跨域问题的方法 感觉挺方便的 记录一下 1 首先需要创建一个filter public class CorsFilter implements Filter public void init FilterConfig fi
  • Flutter的oktoast插件详解

    文章目录 简介 详细介绍 安装和导入 导入 在MaterialApp外面套一层OKToast组件 为什么是包住MaterialApp 显示Toast消息 高级使用 Toast位置 Toast持续时间 自定义Toast样式 高级用法 使用场景
  • 微信小程序使用echarts图表,与延迟加载图表,解决echarts文件过大

    微信小程序使用echarts图表 与延迟加载图表 解决echarts文件过大 引入echarts组件 展示echarts图表数据 延迟加载图表 如何解决echarts文件过大 引入echarts组件 前往echarts微信版的github地
  • 【华为OD】

    目录 一 题目描述 二 输入描述 三 输出描述 用例 四 题目解析 五 Java玩法 六 JavaScript玩法 一 题目描述 小明有 n 块木板 第 i 1 lt i lt n 块木板长度为 ai 小明买了一块长度为 m 的木料 这块木
  • revit二次开发之选择集Selection和过滤集FilteredElementCollector例子(Revit-API2016)

    1 目的 获取当前选择集中包含的对象并列举出来 using System using System Collections Generic using System Linq using System Text using System T
  • 图片处理命令行工具ImageMagick介绍

    最近在做百度OCR图片文字识别时 因为免费版OCR接口调用次数有限 就想把多张图片合并成一张进行文字识别 这就需要在代码中进行图片合并操作 在查找图片批量合并方案时 看到了linux的convert命令 可以将多张图片合并 且使用特别方便
  • java使用easypoi--导入,导出

    先引入maven依赖
  • J2EE反射(Reflect)

    1 什么是反射 反射是java语言中的一种机制 通过这种机制可以动态的实例化对象 读写属性 调用方法 2 反射有哪几种方法 1 1实例化对象 c newInstance 实例化 1 2动态调用方法 Method m 找到方法 m invok
  • 启莱OA CloseMsg.aspx SQL注入

    子贡曰 贫而无谄 富而无骄 何如 子曰 可也 未若贫而乐 富而好礼者也 子贡曰 诗 云 如切如磋 如琢如磨 其斯之谓与 子曰 赐也 始可与言 诗 已矣 告诸往而知来者也 漏洞复现 访问漏洞url 使用SQLmap对参数 user 进行注入
  • Python项目如何打包?

    在 Python 中 你可以使用一些工具和技术来打包你的项目 以便于分发和部署 以下是一种常见的方法 1 创建项目结构 首先 你需要组织好你的项目结构 一个常见的做法是创建一个包含项目代码的文件夹 并在其中包含一个名为 init py 的文
  • idea 搭建一个maven 父子项目

    什么是maven 父子项目 意思就是 相当于一个家庭 一个家庭有一个父亲 可能有多个子女 父亲管子女 子女继承父亲的一切 父子工程也一样 目前很多微服务采用了这种模式 父工程 父工程又称为父控制器 只是一个简单的工程 不能单独运行 作用是将
  • 正则表达式回溯引发的生产惨案

    文章目录 背景 问题 原因分析 如何解决 chatgpt 3 5 GP4的表现 未完待续 背景 业务上的一个字段在解析时为了避免脏数据导致后续ETL的异常 决定从源头将该字段严格按照设计的规则去匹配 该字段的上传是设备端传上来的文件中的一个