import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?<exe>npm)?\\ ?(?<run>(?<=\\k<exe> )run(?:-script)?)?\\ ?(?<command>(?<=\\k<run> )[a-z]+(?:[-|:|.|_][a-z]+)?|(?<!\\k<run> )[a-z]+(?:[-][a-z]+)?)?\\ ?(?<pkgdetails>[a-z0-9\\>\\=\\:\\+\\#\\^\\.\\@\\/][a-z0-9\\>\\=\\:\\+\\#\\^\\~\\.\\@\\/\\-]+)?\\ ?(?<options>(?:\\ [-]{1,2}[a-zA-Z]+(?:[-][a-z]+)*)*)?$";
final String string = "npm install cordova-browser@~5.0.1 --production --save\n\n"
+ "npm install --no-package-lock\n"
+ "npm -v\n\n"
+ "npm version major\n"
+ "npm version minor\n"
+ "npm version patch\n\n"
+ "npm run build\n"
+ "npm run build:spypkg\n"
+ "npm run build-spypkg\n"
+ "npm run build.spypkg\n"
+ "npm run build_spypkg\n"
+ "npm run-script build:spypkg\n"
+ "npm run-script build-spypkg\n"
+ "npm run-script build.spypkg\n"
+ "npm run-script build_spypkg\n\n"
+ "i sots --D\n"
+ "i sots --production\n"
+ "i sots --production --no-save\n"
+ "install sots --production --no-save\n"
+ "npm install sots --production --no-save\n\n"
+ "npm install ./package.tgz\n"
+ "npm install https://github.com/indexzero/forever/tarball/v0.5.6\n"
+ "npm install sax\n"
+ "npm install sax -P\n"
+ "npm install sax -D\n"
+ "npm install sax -O\n\n"
+ "i\n\n"
+ "npm i\n"
+ "i sax\n"
+ "i sax -D\n"
+ "install\n"
+ "install sax -P\n"
+ "install sax -D\n"
+ "install sax -O\n"
+ "npm install githubname/reponame\n"
+ "npm install @myorg/privatepackage\n"
+ "npm install node-tap --save-dev\n"
+ "npm install dtrace-provider --save-optional\n"
+ "npm install readable-stream --save-exact\n"
+ "npm install ansi-regex --save-bundle\n"
+ "npm install sax@latest\n"
+ "npm install @myorg/mypackage@latest\n"
+ "npm install sax@0.1.1\n"
+ "npm install @myorg/privatepackage@1.5.0\n"
+ "npm install sax@\">=0.1.0 <0.2.0\"\n"
+ "npm install @myorg/privatepackage@\">=0.1.0 <0.2.0\"\n"
+ "npm install git+ssh://git@github.com:npm/cli.git#v1.0.27\n"
+ "npm install git+ssh://git@github.com:npm/cli#semver:^5.0\n"
+ "npm install git+https://isaacs@github.com/npm/cli.git\n"
+ "npm install git://github.com/npm/cli.git#v1.0.27\n"
+ "npm install mygithubuser/myproject\n"
+ "npm install github:mygithubuser/myproject\n"
+ "npm install gist:101a11beef\n"
+ "npm install bitbucket:mybitbucketuser/myproject\n"
+ "npm install gitlab:mygitlabuser/myproject\n"
+ "npm install gitlab:myusr/myproj#semver:^5.0\n"
+ "npm install sax@\">=0.1.0 <0.2.0\" bench supervisor\n"
+ "npm install sax --force";
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