Java 用正则表达式解析docker图像
好的,我试着用正则表达式解析一些docker图像。 我有一个字符串列表,每个字符串如下所示: bamos/openface 12周前最新62d1673065e8 1.941 GB 在哪里Java 用正则表达式解析docker图像,java,regex,pattern-matching,Java,Regex,Pattern Matching,好的,我试着用正则表达式解析一些docker图像。 我有一个字符串列表,每个字符串如下所示: bamos/openface 12周前最新62d1673065e8 1.941 GB 在哪里 bamos/openface-->存储库 最新-->标记 62d1673065e8-->映像ID 12周前-->创建 1.941 GB-->大小 我要做的是检查字符串中是否同时包含“bamos/openface”和“Latest”。所以基本上我需要检查一个特定的存储库和它的标签。如果字符串确实包含它们,那么
- bamos/openface-->存储库
- 最新-->标记
- 62d1673065e8-->映像ID
- 12周前-->创建
- 1.941 GB-->大小
如何为此设置模式匹配?您只需在模式中添加字符串以测试匹配,并在如下组中捕获图像ID:
^bamos\/openface\h+latest\h+([a-z0-9]+)
如果字符串匹配,您的图像id将在组1中可用。请参见下面的代码示例:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
String regex = "^bamos\\/openface\\h+latest\\h+([a-z0-9]+)";
String string = "bamos/openface latest 62d1673065e8 12 weeks ago 1.941 GB\n"
+ "other/repository latest 22d1673065e8 12 weeks ago 1.941 GB\n"
+ "bamos/openface previous 77d1673065e8 12 weeks ago 1.941 GB";
Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
Matcher matcher = pattern.matcher(string);
while (matcher.find())
System.out.println(matcher.group(1));
此示例输出第一个图像的图像id
太完美了。非常感谢你@Niitaku!regex101网站是学习正则表达式的好地方。@73是。:)但是要小心:在这里,只使用
if(matcher.find())
效果很好,因为只有一个可能的匹配。如果你同时测试你的行,在时考虑使用<代码>。我正在更新我的答案。