我需要来自docker命令的regex结果
对于情形1:docker1: mycompany.com:5000/example_1:0.0.2
我应该得到3组:
- 组1:docker1
- 组2:example_1
- 组3:0.0.2
对于情形2:docker2: mycompany.com:5000/example_2
,我应该得到2组
- 组1:docker2
- 组2:example_2
对于情况3:docker3: mycompany.com:5000/example_3:latest
,我应该得到3组像第一个
- 组1:docker3
- 组2:example_3
- 组3:最新
我使用以下正则表达式:
^(.*): mycompany.com:5000/((S*):(w+.?w+.?w+)|S*)$
但是我似乎不能删除第1和第3个case的第二组
请在下面的链接中找到我所做的。
请有人指导我如何删除group2 (example_1:0.0.2或example_3:latest)?
您可以使用否定的字符类编写模式,并注意转义点以匹配它。
^([^n:]*): mycompany.com:5000/([^s:]+)(?::(d+(?:.d+)*|w+))?$
^
起始字符串([^n:]*)
Capture组1,匹配除:
或换行符 以外的任何字符: mycompany.com:5000/
匹配: mycompany.com:5000/
([^s:]+)
Capture组2,匹配1+次非空白字符,不包括:
(?:
备选项的非捕获组:
Match literal(
Capture第3组d+(?:.d+)*
匹配1+数字,并可选择重复.
和再次1+数字|
或w+
匹配1+字字符
)
关闭组
)?
关闭非捕获组并使其为可选$
字符串结束
Regex演示
或者更短一点:
^([^n:]*): mycompany.com:5000/([^s:]+)(?::([^s:]+))?$
Regex演示