我有一个看起来像这样的列表
imagetest-14f66c4664-d8ngk
image-net-kxpxc
image-deploy-787d65b646-6bhtn
我想构建一个正则表达式,该表达式匹配任何跟在后面的String
-
后跟5个字符或-
,然后是8到10个字符,然后是-
和5个字符正则表达式应匹配所有:
imagetest-14f66c4664-d8ngk
image-net-kxpxc
image-deploy-787d65b646-6bhtn
waeve-net-xgw8m
会有一个简单的方法吗?
答案 0 :(得分:0)
看起来像(请参阅https://regexr.com/3t88e)
-([0-9a-f]+-)?([a-z0-9]{5})$
将匹配。
基本上:
([0-9a-f]+-)?
)([a-z0-9]{5})
)标识符,$
)的末尾(但是请注意,这也将与image-hello
匹配,因为hello
可能会误认为是5个字符的标识符。)
EDIT :要匹配整个字符串,请扩展为
^image(?:test|-net|-deploy)-([0-9a-f]+-)?([a-z0-9]{5})$
所以是文字“图像”,后跟test
,-net
或-deploy
,然后是上面描述的内容。
答案 1 :(得分:0)
这是怎么回事:^(image(?:test|-net|-deploy))-(.+)$
^
锚定到行的开头(...)
围绕一个匹配组(?:...)
围绕着一个不匹配的人群|
提供了允许多个选项之一的“ 或” .+
与任何字符(.
)匹配一次或多次(+
)$
锚定到行的末尾这导致以下几组:
imagetest 14f66c4664-d8ngk
image-net kxpxc
image-deploy 787d65b646-6bhtn
在Regex101上玩过-解释也很好:https://regex101.com/r/0CphvX/3