这是我的正则表达式:
^\/(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服务文件中使用它,因此即使使用哪种正则表达式也不确定。
答案 0 :(得分:2)
括号的位置可以选择var/lib/docker
或kubelet
。如果您希望替代项是docker
或kubelet
,则应该是这样的:
^\/(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\/).*