这个问题在这里已经有了答案:
参考-这个正则表达式是什么意思(1个答案)上个月关门了。我正在寻找一个正则表达式,将测试是否一个docker图像前缀与注册表。以下是它应该匹配的内容:
docker.io/library/busybox docker.io/library/busybox:latest docker.io/busybox
它不应该:
busybox busybox:latest library/busybox library/busybox:latest
m4pnthwp1#
使用 [^/]+ 而不是 .* 作为 * 表示0或更多 + 表示一次或多次重复以及 [^/] 表示不是斜杠的任何字符。为什么你需要括号?当组匹配时,这些对提取组很有用。如果只需要布尔结果(匹配与否),可以从表达式中删除它们。你编辑了这个问题,所以这里是我编辑的答案:
[^/]+
.*
*
+
[^/]
[^/]+\.[^/.]+/([^/.]+/)?[^/.]+(:.+)?
说明: [^/] :不是斜杠的任何字符 [^/]+ :任何不包含斜杠的字符串 \. :点(转义不表示任何字符) [^/.]+ :任何不包含斜杠或点的字符串 [^/]+\.[^/.]+/ :任何以点分隔并以斜杠结尾的字符串(通常是docker.io)。 ()? 意味着这可能发生0或1次(可选) (:.+)? :可选字符串,由冒号后跟任何字符串组成,但不能为空。
\.
[^/.]+
[^/]+\.[^/.]+/
()?
(:.+)?
1条答案
按热度按时间m4pnthwp1#
使用
[^/]+
而不是.*
作为*
表示0或更多+
表示一次或多次重复以及
[^/]
表示不是斜杠的任何字符。为什么你需要括号?当组匹配时,这些对提取组很有用。如果只需要布尔结果(匹配与否),可以从表达式中删除它们。
你编辑了这个问题,所以这里是我编辑的答案:
说明:
[^/]
:不是斜杠的任何字符[^/]+
:任何不包含斜杠的字符串\.
:点(转义不表示任何字符)[^/.]+
:任何不包含斜杠或点的字符串[^/]+\.[^/.]+/
:任何以点分隔并以斜杠结尾的字符串(通常是docker.io)。()?
意味着这可能发生0或1次(可选)(:.+)?
:可选字符串,由冒号后跟任何字符串组成,但不能为空。