如何用正则提取URL有效路径?Grafana数据转换需求
问题描述
现有如下格式的URL数据:
/v2/ports/PF-12345 /v2/services/cloud/PF-12345 /v2/services/cloud/connections/PF-12345 /v2/services/cloud-routers/PF-L3-CUST-12345/connections /v2/services/cloud-routers/PF-L3-CUST-12345678/connections/PF-L3-CON-12345678/bgp/c03664c5-fd8d-8623-acb5-bda4b545fb32 /v2.1/services/cloud-routers/PF-L3-CUST-12345/connections/PF-L3-CON-12345/status
需要将其转换为移除版本号(如v2、v2.1)及各类ID/UUID后的纯路径格式:
ports services/cloud services/cloud/connections services/cloud-routers/connections services/cloud-routers/connections/bgp services/cloud-routers/connections/status
尝试使用正则表达式 /.*(?=/.*?) 但未成功,寻求可用于Grafana数据转换的正确正则表达式。
解决方案
可用的正则表达式(用于Grafana的替换转换)
查找模式:
^/v\d+\.?\d*/|/(PF-[^/]+|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?=/|$)
替换为空字符串(即不输入任何内容)
正则表达式说明
^/v\d+\.?\d*/:匹配开头的版本号路径段,例如/v2/或/v2.1/,确保移除所有版本前缀。|:逻辑或,分隔两组匹配规则。/(PF-[^/]+|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?=/|$):- 匹配以
/开头的ID段:PF-[^/]+:匹配所有以PF-开头的ID(直到下一个/为止);[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}:匹配标准UUID格式;
(?=/|$):正向预查,确保匹配的是完整的路径段(后面要么是/要么是字符串结尾),避免误删部分内容。
- 匹配以
在Grafana中使用的步骤
- 进入面板的「Transform」(转换)选项卡;
- 添加「Replace」(替换)转换;
- 选择包含URL的字段;
- 粘贴上述查找模式到「Find」输入框;
- 「Replace with」留空;
- 应用转换即可得到目标纯路径格式。
内容的提问来源于stack exchange,提问作者Romain
相关产品推荐
相关产品推荐

