我正在使用 Grafana 和 Prometheus 创建一些图表,但我认为这基本上是一个正则表达式(RE2?)问题。我正在动态创建一个元素列表并填充一个变量(查询label_values(source)
“源”包含可能结果列表的位置)。查询返回如下列表:
udr_foo
udr_owls
dns-baz1
dns-baz399
rpz_c_1.donotuse
rpz_c_1.memosis
rpz_c_1.argylesocks
rpz_c_1.argylesocks3
rpz_c_1.argylesocks_http2
我无法修改数据库中的数据;我必须用正则表达式修剪它。目前,我有这个 RE2 正则表达式,我把它放在一起,我申请到列表中做一些排除:
/^(?!dns|udr|rpzlog_c_1.donotuse).*/
这给了我一个部分有用的结果,因为它排除了我不想要的结果:
rpz_c_1.memosis
rpz_c_1.argylesocks
rpz_c_1.argylesocks3
rpz_c_1.argylesocks_http2
问题:我将如何修改该正则表达式,以便通过剥离前导“rpz_c_1”为我提供更简洁的结果集。字符串组件?由于这是嵌入在 Grafana 工具中的,因此我无法将多个正则表达式实例与 shell 一起“管道” - 我只有一个正则表达式机会来修改结果。这是我希望返回的一组结果:
memosis
argylesocks
argylesocks3
argylesocks_http2
我的正则表达式可能很糟糕。一种更简洁的看待方式可能是:
- 返回所有包含“rpz_c_1”的结果。作为字符串的开头
- 除了包含字符串“donotuse”的任何内容
- 然后剥离“rpz_c_1”。从每个字符串的开头