Java 用于测试docker映像名是否以注册表作为前缀的正则表达式?
我正在寻找一个正则表达式,它将测试docker映像是否以注册表作为前缀 以下是它应该匹配的内容:Java 用于测试docker映像名是否以注册表作为前缀的正则表达式?,java,regex,docker,docker-registry,Java,Regex,Docker,Docker Registry,我正在寻找一个正则表达式,它将测试docker映像是否以注册表作为前缀 以下是它应该匹配的内容: docker.io/library/busybox docker.io/library/busybox:latest docker.io/busybox 它不应该做的是: busybox busybox:latest library/busybox library/busybox:latest 使用[^/]+代替*,因为*表示0或更多,而+表示1或更多重复 而[^/]表示任何不是斜杠的字符 还有
docker.io/library/busybox
docker.io/library/busybox:latest
docker.io/busybox
它不应该做的是:
busybox
busybox:latest
library/busybox
library/busybox:latest
使用
[^/]+
代替*
,因为*
表示0或更多,而+
表示1或更多重复
而[^/]
表示任何不是斜杠的字符
还有,为什么需要括号?当组匹配时,这些对提取组很有用。如果只需要布尔结果(匹配与否),可以从表达式中删除它们
您编辑了问题,因此以下是我编辑的答案:
[^/]+\.[^/]+/([^/]+/)?[^/]+(:.+)?
说明:
:非斜杠的任何字符[^/]
:任何不包含斜杠的字符串[^/]+
:一个点(转义符不表示任何字符)\。
:任何不包含斜杠或点的字符串[^/]+
:任何以点分隔并以斜杠结尾的字符串(通常为docker.io)[^/]+\.[^/]+/
表示这可能发生0次或1次(可选)()?
:可选字符串,由冒号后跟任意字符串组成,但不能为空(:.+)?
:
之前显示/
?或者根本没有:
?要查看模式是否“合理”,我们需要一组它的要求。它们是什么?它是否应该匹配docker.io/library/busybox
(实际上与busybox:latest
相同)?在这个问题上,你对正则表达式有什么问题?谢谢,你能帮我解释一下吗?