负责服务器、发布流水线、监控告警和故障处理的运维或 SRE,日常工作里告警多、脚本杂、变更文档和故障复盘写起来费时,夜间排障时更需要快速理清思路。正则表达式功能强大但难写难读,用自然语言描述规则让 AI 生成,再用测试样例验证,是最省事的做法。这篇文章用一个完整的例子演示运维工程师如何借助 AI 写正则表达式:给 AI 提供规则描述、应该匹配和不应该匹配的样例,让它生成正则并逐段解释,再在测试工具中验证。

场景:运维工程师为什么需要 AI 写正则表达式

运维工程师需要从一堆文本里批量提取或替换内容,比如从“告警记录”导出的文本中找出日期、编号或金额。手动处理几百条太慢,自己写正则又总是写错。对运维工程师来说,这类需求往往和“把发布流水线的构建时间缩短约三分之一”“推进日志集中采集”这些事挤在同一周,留给它的时间并不多。

用什么工具

可以用 ChatGPT、Claude、DeepSeek 等对话助手生成正则,用 regex101 等在线工具测试;VS Code、Cursor 等编辑器的 AI 助手也能直接在文件中生成和应用。

生成正则用对话助手,验证用正则测试工具或编辑器的查找替换功能。

一个虚构的例子

先看一个虚构但很典型的例子。小李是一位负责服务器、发布流水线、监控告警和故障处理的运维或 SRE,这周手头的事情包括“完成两台数据库服务器的磁盘扩容”和“演练数据库主从切换”,偏偏这时又需要写正则表达式。小李没有从空白页开始,而是先花几分钟把相关材料整理好,按下面的提示词交给 AI,拿到初稿后对照原始资料逐条核对,再补上自己的判断。整个过程中,小李特别留意不把服务器 IP、账号口令、证书私钥和内部拓扑放进对话里。

分步操作

  1. 说明使用环境:Python、JavaScript、Excel 还是编辑器查找替换
  2. 描述规则,并提供 3-5 个应该匹配的例子
  3. 再提供 2-3 个不应该匹配的例子
  4. 在测试工具中用真实样例验证后再批量使用

提示词示例

提示词的关键是把背景、要求和输出格式写清楚:

【背景】身份:负责服务器、发布流水线、监控告警和故障处理的运维或 SRE;平时主要和开发团队和技术负责人打交道。
请帮我写一个 Python 正则表达式,用于从文本中提取日期和编号。

规则:
1. 日期格式可能是 2026-10-16、2026/10/16、2026年10月16日
2. 编号格式是两个大写字母加 6 位数字,例如 AB123456

应该匹配:
- “告警日期:2026/10/16,编号 AB123456”
- “2026年9月3日处理的 CD000123”

不应该匹配:
- “AB12345”(只有 5 位数字)
- “2026-13-01”(月份不合法)

请分别给出两个正则,逐段解释,并写一段 Python 示例代码。

AI 输出示例(示意)

以下是一段示意性的输出,内容基于虚构的工作记录,仅用于展示格式和思路,实际结果会因工具和输入不同而变化:

日期

(\d{4})[-/年](0?[1-9]|1[0-2])[-/月](0?[1-9]|[12]\d|3[01])日?
  • (\d{4}):4 位年份
  • [-/年]:分隔符
  • (0?[1-9]|1[0-2]):1-12 月
  • (0?[1-9]|[12]\d|3[01])日?:1-31 日,可选“日”字

编号

\b[A-Z]{2}\d{6}\b

示例代码

import re
text = "2026年9月3日处理的 CD000123"
print(re.findall(r"\b[A-Z]{2}\d{6}\b", text))

注意:中文与字母相邻时 \b 可能不按预期工作,必要时改用 (?<![A-Z0-9]) 和 (?![0-9])。

注意示例中所有内容都是虚构的。实际使用时,AI 的输出质量取决于你提供的材料是否完整、要求是否具体。

避坑指南

  • 不同语言的正则语法有细微差异,说明使用环境。
  • 正则只校验格式,不校验逻辑(比如 2 月 30 日),需要时再用代码判断。
  • 批量替换前先备份,或先只做查找确认结果。

给运维工程师的特别提醒

排障时把日志片段、时间线和最近变更一起提供,让 AI 帮你列排查顺序。还有一点很关键:涉及删除、重启、改权限的命令,必须先确认影响范围并做好回滚准备,不能照抄执行。

还可以这样用

  • 编辑器批量替换:在 VS Code 或 Word 通配符中批量改格式。
  • 解释正则:把看不懂的正则交给 AI,让它逐段说明。

相关阅读