You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用regexReplace正则替换文本 仅保留内容中的5位数字串

可用工具与需求说明

你仅可使用支持模式匹配替换的regexReplace函数,函数语法如下:

regexReplace('text', 'pattern', 'new text')

需求为从指定格式的文本中,仅保留独立出现的5位长度数字串,其余所有内容全部替换为空字符串。待处理的示例文本如下:

CRITICAL - 192.111.6.4: rta nan, lost 100%
Created Time    Tue, 5 Jul 8:45
Integration Name    CheckMK Integration
Node    192.111.6.4
Metric Name POS1
Metric Value    DOWN
Resource    54871
Alert Tags  54871, POS1

示例中需要保留的目标内容为54871这类5位数字。

原有方案问题

当前使用的正则\w*[^\d\W]\w*仅能匹配包含字母的内容,无法覆盖特殊符号、标点、空格、长度不符合要求的数字(如IP段、时间数字、短编号后缀等),无法实现全量过滤。

调整后实现代码
regexReplace("{{ticket.description}}", "\\D+|\\d{1,4}(?!\\d)|\\d{6,}", "")
正则规则说明

正则中三个匹配规则用|分隔,所有命中规则的内容都会被替换为空字符串:

  • \D+:匹配1个及以上连续的非数字字符,覆盖所有字母、标点、空格、特殊符号
  • \d{1,4}(?!\d):匹配长度为1-4位的连续数字,且数字串后不拼接其他数字,过滤所有长度不足5位的短数字,包括IP段、百分比、日期时间、带字母后缀的短数字(如POS1里的1)
  • \d{6,}:匹配长度为6位及以上的连续数字,过滤所有超长数字串,避免从长数字中截取到错误的5位片段

以上规则运行后,文本中只会剩余所有独立出现的5位连续数字,针对示例文本的输出结果为5487154871,符合提取要求。

如果你的正则引擎不支持负向前瞻断言(?!\d),可替换为带单词边界的规则:\W+|\b\d{1,4}\b|\b\d{6,}\b,可覆盖绝大多数常规场景。

内容的提问来源于stack exchange,提问作者gclark18

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 10:21:19