regex - 如何获得两个值
问题描述
我正在尝试在 Grafana 中创建变量并从一个长字符串中获取两个值。查询结果为:
ifHCInOctets{ifAlias="string1",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 22 on Unit 1",ifIndex="int2",ifName="0x3232"}
我需要在一个结果中得到 string1 和 int2 。我试试这个正则表达式,但在 grafana 我只得到 string1:
.*ifAlias="(.*?)",.*,ifIndex="([1-25][^"]*).*
更新:
目标是在图表标题中获取端口索引和 ifAlias。原始数据是:
ifHCOutOctets{ifAlias="UPSTREAM",ifDescr="",ifIndex="4",ifName="4"} 9.3057114067485e+13
ifHCOutOctets{ifAlias="",ifDescr="",ifIndex="5",ifName="5"} 2.274143681e+09
ifHCOutOctets{ifAlias="",ifDescr="",ifIndex="6",ifName="6"} 7.002508461736e+12
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 10 on Unit 1",ifIndex="10",ifName="10"} 2.577610903151e+12
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 15 on Unit 1",ifIndex="15",ifName="15"} 4.854219613e+10
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 16 on Unit 1",ifIndex="16",ifName="16"} 4.96070449818e+11
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 17 on Unit 1",ifIndex="17",ifName="17"} 1.9350264954065e+13
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 18 on Unit 1",ifIndex="18",ifName="18"} 3.3384544298231e+13
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 19 on Unit 1",ifIndex="19",ifName="19"} 3.668765293115e+12
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 20 on Unit 1",ifIndex="20",ifName="20"} 1.60948251155615e+14
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 21 on Unit 1",ifIndex="21",ifName="21"} 1.3754296283244e+13
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 22 on Unit 1",ifIndex="22",ifName="22"} 1.7416985946384e+13
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 23 on Unit 1",ifIndex="23",ifName="23"} 4.4569373926096e+13
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 24 on Unit 1",ifIndex="24",ifName="24"} 1.339389886592e+12
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 26 on Unit 1",ifIndex="26",ifName="26"} 0
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 3 on Unit 1",ifIndex="3",ifName="3"} 1.3292564781714e+13
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 7 on Unit 1",ifIndex="7",ifName="7"} 3.27435396e+10
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 8 on Unit 1",ifIndex="8",ifName="8"} 1.9079625314e+10
解决方案
看看这里:
ifAlias="([^"]+)",.*ifIndex="([^"]+)
https://regex101.com/r/1120hJ/1
您的 ifIndex 正在寻找数字[1-25]
(应该是[0-9]
),其中示例字符串还包含文本
推荐阅读
- google-apps-script - 如何使用 App Scripts 修改现有的 Google Sheet 保护?
- ruby-on-rails - 如何模仿 Devise 的 sign_in(@user) 辅助方法?
- javascript - Web:如何重定向到填充信息的 CodePen 或 JsFiddle?
- linux - 如何使用从 Dymola 导出的源代码 FMU 为 Linux 64 位生成二进制文件。(交叉编译Windows到Linux)
- c# - 仅返回指定目录中的重复文件
- python-3.x - Heroku Discord Bot 构建但在部署时无法工作
- powershell - Sharepoint Net Webclient通过powershell输出检索总是HTML
- python - API Call Statistics Sweden SCB, No values displayed
- java - Micronaut FunctionInitializer 覆盖应用程序属性
- maxima - 如何检测 Maxima 中的内置函数?