我正在尝试用regex提取docker compose文件的所有容器的绑定挂载/卷。
我为这个目的制作的图案是:
/volumes:n(?:^[ n]+- ?(S+))/gm
Regex Demo
但它只选择每个容器的第一个卷/绑定装载。
如何选择ALLvolumes
列表项?
您可以匹配卷:和一个换行符,然后匹配以1个或多个空格开头的所有行,然后匹配-
bvolumes:r?n((?:[^Srn]+- .*(?:r?n|$))*)
bvolumes:r?n
(
捕获组1(?:
非捕获组[^Srn]+
除换行符外匹配1+个空格- .*(?:r?n|$)
匹配后面跟有字符串其余部分的-
)*
关闭非捕获组并重复0+次
)
关闭组1
Regex演示
如果卷必须位于该行的开头,则可以匹配前面的可选空格。
^[^Srn]*volumes:r?n((?:[^Srn]+- .*(?:r?n|$))*)
Regex演示