我需要正则表达式来自docker命令的结果。
对于情况1:docker1: mycompany.com:5000/example_1:0.0.2
i应获得3组:
1.组1:docker1
1.组2:example_1
1.第3组:0.0.2
对于情况2:docker2: mycompany.com:5000/example_2
i应获得2组
1.组1:docker2
1.组2:example_2
对于情况3:docker3: mycompany.com:5000/example_3:latest
我应该得到3个组,如第一个
1.组1:docker3
1.组2:example_3
1.组3:最新
我使用下面的正则表达式来实现:
^(.*): mycompany\.com:5000\/((\S*)\:(\w+.?\w+.?\w+)|\S*)$
但是好像我不能在第一和第三个案例中删除第二组
请在following链接中找到我所做的。
请有人指导我如何删除group2(example_1:0.0.2或example_3:latest)?
你好pierre
1条答案
按热度按时间o3imoua41#
您可以使用求反字符类编写模式,并注意转义点以按字面意思匹配它。
^
字符串开头([^\n:]*)
捕获group 1,匹配除:
以外的任意字符或换行符: mycompany\.com:5000\/
匹配: mycompany.com:5000/
([^\s:]+)
捕获组2,匹配1+次非空白字符,不包括:
(?:
备选方案的非捕获组:
按字面匹配(
捕获组3\d+(?:\.\d+)*
匹配1+位数字,并可选择重复.
和1+位数字|
或\w+
匹配1+单词字符)
关闭组)?
关闭非捕获组并使其可选$
字符串结束Regex demo
或者稍微短一点:
Regex demo