正则表达式交替无法正常工作

时间:2018-09-27 19:18:35

标签: regex prometheus

这是我的正则表达式:

^\/(var\/lib\/docker|kubelet)|(run\/docker\/netns\/).*

这里是需要捕获的字符串。

/var/lib/docker/pods/9bbc0d82-be96-11e8-9217
/var/lib/kubelet/pods/9bbc0d82-be96-11e8-9217

这捕获了“ / var / lib / docker”而不是“ / var / lib / kubelet”。 我在这里想念什么?

我正在node_exporter服务文件中使用它,因此即使使用哪种正则表达式也不确定。

2 个答案:

答案 0 :(得分:2)

括号的位置可以选择var/lib/dockerkubelet。如果您希望替代项是dockerkubelet,则应该是这样的:

^\/(var\/lib\/(docker|kubelet))|(run\/docker\/netns\/).*

请注意括号内应加上“ docker | kubelet”,而不是:

(var\/lib\/docker|kubelet)"

答案 1 :(得分:1)

您应该使用非捕获组(?:docker|kubelet),否则您将匹配/var/lib/docker/kubelet

\/(var\/lib\/(?:docker|kubelet))|(run\/docker\/netns\/).*

Regex demo