import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?<type>(?:ci-|cloud-)?[^-]+)[_-](?<version>\\d+\\.\\d+\\.\\d+)(?<alpha>[-+]alpha)?(?:-(?<date>\\d{8}))?[-+](?:(?<build>\\d+).(?<builddate>\\d{8}))?(?:[.-]?(?<sha>[A-Fa-f0-9]+(?:[.-]\\d+)?))?(?:\\.(?<arch>.+))?\\.(?<fmt>.{3})";
final String string = "cloud-csm-6.4.13-20210927-89fa91ca.lnx.x86_64.zip\n"
+ "cams-7.2.4+4.20211216.zip\n"
+ "cams-7.2.4-alpha+4.20211216.zip\n"
+ "cca-6.4.23+753.20211216.193a0386-1.noarch.rpm\n"
+ "cca-6.4.23+alpha+753.20211216.193a0386-1.noarch.rpm\n"
+ "cca-6.4.23-alpha+753.20211216.193a0386.zip\n"
+ "cca_6.4.23+753.20211216.193a0386-1_all.deb\n"
+ "ci-j2ee-6.4.23+790.20211216.193a0386.zip\n"
+ "ci-j2ee-6.4.23-alpha+790.20211216.193a0386.zip\n"
+ "ci-server-6.4.23+790.20211216.193a0386.zip\n"
+ "ci-server-6.4.23-alpha+790.20211216.193a0386.zip\n"
+ "cloud-ci-7.1.15+90.20210119.46eef7d3-1.noarch.rpm\n"
+ "cloud-ci-7.2.4+247.20211216.eba3915b.noarch.zip\n"
+ "cloud-ci-7.2.4+alpha+247.20211216.eba3915b-1.noarch.RPM\n"
+ "cloud-ci-7.2.4-alpha+247.20211216.eba3915b.noarch.zip\n"
+ "cloud-cm-7.2.4+246.20211216.eba3915b-1.noarch.rpm\n"
+ "cloud-cm-7.2.4+246.20211216.eba3915b.noarch.zip\n"
+ "cloud-cm-7.2.4+alpha+246.20211216.eba3915b-1.noarch.rpm\n"
+ "cloud-cm-7.2.4-alpha+246.20211216.eba3915b.noarch.zip\n"
+ "cloud-csd-7.2.4+241.20211216.eba3915b-1.x86_64.rpm\n"
+ "cloud-csd-7.2.4+241.20211216.eba3915b.1-sym-x86_64.rpm\n"
+ "cloud-csd-7.2.4+241.20211216.eba3915b.lnx.x86_64.zip\n"
+ "cloud-csd-7.2.4+241.20211216.eba3915b.sym.lnx.x86_64.zip\n"
+ "cloud-csd-7.2.4+alpha+241.20211216.eba3915b-1.x86_64.rpm\n"
+ "cloud-csd-7.2.4+alpha+241.20211216.eba3915b.1-sym-x86_64.rpm\n"
+ "cloud-csd-7.2.4-alpha+241.20211216.eba3915b.lnx.x86_64.zip\n"
+ "cloud-csd-7.2.4-alpha+241.20211216.eba3915b.sym.lnx.x86_64.zip\n"
+ "cloud-csm-6.4.13-20210927-89fa91ca.lnx.x86_64.zip\n"
+ "cloud-csm-6.4.13-20210927-89fa91ca.win.x86.zip\n"
+ "cloud-cst-7.2.4+241.20211216.eba3915b-1.x86_64.rpm\n"
+ "cloud-cst-7.2.4+241.20211216.eba3915b.1-sym-x86_64.rpm\n"
+ "cloud-cst-7.2.4+241.20211216.eba3915b.lnx.x86_64.zip\n"
+ "cloud-cst-7.2.4+241.20211216.eba3915b.sym.lnx.x86_64.zip\n"
+ "cloud-cst-7.2.4+alpha+241.20211216.eba3915b-1.x86_64.rpm\n"
+ "cloud-cst-7.2.4+alpha+241.20211216.eba3915b.1-sym-x86_64.rpm\n"
+ "cloud-cst-7.2.4-alpha+241.20211216.eba3915b.lnx.x86_64.zip\n"
+ "cloud-cst-7.2.4-alpha+241.20211216.eba3915b.sym.lnx.x86_64.zip\n"
+ "cloud-parts-7.2.4-20211216.zip\n"
+ "cloud-parts-7.2.4-alpha-20211216.zip\n"
+ "cloud-xds-6.4.6-20211101-4b76a168.lnx.x86.zip\n"
+ "cloud-xds-6.4.6-20211101-4b76a168.win.x86.zip\n"
+ "cm-6.4.23+798.20211216.193a0386-1.noarch.rpm\n"
+ "cm-6.4.23+alpha+798.20211216.193a0386-1.noarch.rpm\n"
+ "cm-6.4.23-alpha+798.20211216.193a0386.zip\n"
+ "cm_6.4.23+798.20211216.193a0386-1_all.deb\n"
+ "cm_6.4.23+alpha+798.20211216.193a0386-1_all.deb\n"
+ "csm-6.4.13-20210927-89fa91ca.lnx.x86_64.tar\n"
+ "csm-6.4.13-20210927-89fa91ca.win.x86.zip\n"
+ "dbconfig-7.2.4+231.20211216.eba3915b.zip\n"
+ "dbconfig-7.2.4-alpha+231.20211216.eba3915b.zip\n"
+ "xds-6.4.6-20211101-4b76a168.lnx.x86.tar\n"
+ "xds-6.4.6-20211101-4b76a168.win.x86.zip";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html