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

如何编写单个正则表达式提取文本中的多个指定目标内容?

正则表达式一次性提取多个目标内容

需求场景

给定文本:

CpuUtilization[GqIF:CA-TORONTO-1-AD-1 | FAULT-DOMAIN-1 | ocid1.image.oc1.ca-toronto-1.aaaaaaaanzxg2lycvtpzgobswpp3kht3byzc4kduvbuzks7u65r5zlyrzdaq | Default | ca-toronto-1 | Bastion | ocid1.instance.oc1.ca-toronto-1.an2g6ljrwe6j4fqcnimiwc5wkneq7x6zcd4m23emiv7scbx47za7bpht54la | VM.Standard.E3.Flex]

需要一次性提取三个目标值:CA-TORONTO-1-AD-1、Bastion、VM.Standard.E3.Flex。

解决方案

可以通过包含三个捕获组的单个正则表达式实现,以下两种写法都可行:

写法1(直观匹配)

^CpuUtilization\[GqIF:([^|]+) \| .*? \| .*? \| .*? \| .*? \| ([^|]+) \| .*? \| ([^\]]+)\]$
  • 捕获组1:匹配GqIF:后到第一个|前的内容,对应CA-TORONTO-1-AD-1
  • 捕获组2:匹配第6个|分隔的字段,对应Bastion
  • 捕获组3:匹配最后一个|后到]前的内容,对应VM.Standard.E3.Flex

写法2(高效精准,按字段位置跳过)

^CpuUtilization\[GqIF:([^|]+)(?: \| [^|]+){4} \| ([^|]+)(?: \| [^|]+) \| ([^\]]+)\]$
  • (?: \| [^|]+){4}:用非捕获组跳过前4个不需要的字段(FAULT-DOMAIN-1 到 ca-toronto-1)
  • 捕获组2直接定位到第6个字段的Bastion
  • (?: \| [^|]+):跳过中间的实例ID字段
  • 捕获组3匹配最后一个目标值VM.Standard.E3.Flex

使用说明

在支持多捕获组的工具(如Python的re模块、grep -P、各类正则测试工具)中,提取捕获组1、2、3的结果,就能得到三个目标内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 22:43:17