import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?P<name>[\\w\\-\\.]+)-(?P<version>v?\\d+(\\.\\d+)?(\\.\\d+)?(-[\\w\\-]+(\\.[\\w\\-]+)*)?(\\+[\\w\\-]+(\\.[\\w\\-]+)*)?)(?P<ext>\\.[\\w\\-]+)$";
final String string = "ansi-escapes-4.3.1.tgz\n"
+ "babel-eslint-10.1.0.tgz\n"
+ "chance-1.1.7.tgz\n"
+ "cli-cursor-3.1.0.tgz\n"
+ "eslint-7.13.0.tgz\n"
+ "faker-5.1.0.tgz\n"
+ "forever-monitor-3.0.1.tgz\n"
+ "fs-extra-9.0.1.tgz\n"
+ "lorem-ipsum-2.0.3.tgz\n"
+ "micromatch-4.0.2.tgz\n"
+ "mongoose-5.10.13.tgz\n"
+ "puppeteer-5.4.1.tgz\n"
+ "puppeteer-extra-3.1.15.tgz\n"
+ "puppeteer-extra-plugin-stealth-2.6.3.tgz\n"
+ "random-email-1.0.3.tgz\n"
+ "random-useragent-0.5.0.tgz\n"
+ "random-words-1.1.1.tgz\n"
+ "slice-ansi-4.0.0.tgz\n"
+ "uuid-8.3.1.tgz\n"
+ "validator-13.1.17.tgz\n"
+ "wrap-ansi-7.0.0.tgz\n"
+ "font-awesome-5.11.2.tgz\n"
+ "react-dom-16.13.1.tgz\n"
+ "bootstrap-4.5.2.tgz\n"
+ "moment-duration-format-2.3.2.tgz\n"
+ "imagesloaded-4.1.tgz\n"
+ "flickity-2.0.tgz\n"
+ "lomster-1.tgz\n"
+ "unicorn-1.2.3-alpha.10.beta.0.tgz\n"
+ "rainbow-v1.1.1.tgz\n"
+ "object.assign-4.1.4.tgz\n"
+ "hello_world-0.0.3.tgz\n"
+ "typescript-package-1-1.0.2.tgz\n";
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