regex - 使用正则表达式提取 docker-compose 文件卷
问题描述
我正在尝试使用正则表达式提取 docker-compose 文件的所有容器的绑定挂载/卷。
我为此目的制作的模式是:
/volumes:\n(?:^[ \n]+- ?(\S+))/gm
但它只选择每个容器的第一个卷/绑定挂载。
我怎样才能选择所有 volumes
列表项?
解决方案
您可以匹配 volumes: 和一个换行符,然后匹配所有以 1 个或多个空格开头的行,然后 -
\bvolumes:\r?\n((?:[^\S\r\n]+- .*(?:\r?\n|$))*)
\bvolumes:\r?\n
(
捕获组 1(?:
非捕获组[^\S\r\n]+
匹配 1+ 个空格,换行符除外- .*(?:\r?\n|$)
匹配-
后跟字符串的其余部分
)*
关闭非捕获组并重复 0+ 次
)
关闭组 1
如果卷必须位于行首,则可以在其前面加上可选空格。
^[^\S\r\n]*volumes:\r?\n((?:[^\S\r\n]+- .*(?:\r?\n|$))*)
推荐阅读
- javascript - 使用Javascript反转字符串而不反转特殊字符
- matlab - 在图形标题中显示所有预测及其百分比
- variables - 是否可以使用 Microsoft Flow 将文件发布到共享点一个因用户名而异的文件夹?
- scala - Scala中的简单函数组合
- google-api - 使用 Google ID 查找用户的 YouTube 帐户
- ios - Xamarin - iOS - 查找自动锁定屏幕时间
- angular - TypeScript 管道/地图错误 - TS2322 Type Observable<{} | User> 不可分配给 Observable
- jquery - 如何使用 Node 从两个 MongoDB 集合中删除
- c++ - 全局功能识别失败
- python - 在 ubunto 16.04 中将版本 3.5 更新到 3.6 后在 python 中读取数据时出错