import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?:\\[[A-Z]*-\\d* \\/fixed\\] )?(?<type>\\w*)(?:\\((?<scope>[\\w$.\\-*\\/ ]*)\\))?: (?<subject>(?:.(?!(?i)\\/fixed))*)$";
final String string = "# without scope\n"
+ "feat: add REST endpoint /my-app/api/versions\n"
+ "fix: change git commit username\n"
+ "style: set indentation to 4 spaces\n"
+ "docs: explain new configuration preset\n\n"
+ "# with scope\n"
+ "feat(backend): add REST endpoint /my-app/api/versions\n"
+ "fix(default): change git commit username\n"
+ "style(npm): set indentation to 4 spaces\n"
+ "docs(terraform): explain new configuration preset\n\n"
+ "# smartcommit without scope\n"
+ "[CORE-1234 /fixed] feat: add REST endpoint /my-app/api/versions\n"
+ "[HDEFECT-1234 /fixed] fix: change git commit username\n"
+ "[HDEFECT-1234 /fixed] style: set indentation to 4 spaces\n"
+ "[HDEFECT-1234 /fixed] docs: explain new configuration preset\n\n"
+ "# smartcommit with scope\n"
+ "[CORE-1234 /fixed] feat(backend): add REST endpoint /my-app/api/versions\n"
+ "[HDEFECT-1234 /fixed] fix(default): change git commit username\n"
+ "[HDEFECT-1234 /fixed] style(npm): set indentation to 4 spaces\n"
+ "[HDEFECT-1234 /fixed] docs(terraform): explain new configuration preset\n\n"
+ "# not match - wrong smart commit\n"
+ "[core-1234 /fixed] feat(backend): add REST endpoint /my-app/api/versions\n"
+ "[hdefect-1234 /fixed] fix(default): change git commit username\n"
+ "[hdefect-1234 /fixed] style(npm): set indentation to 4 spaces\n"
+ "[hdefect-1234 /fixed] docs(terraform): explain new configuration preset\n\n"
+ "# not matched - use /fixed in title \n"
+ "[CORE-1234 /fixed] feat(backend): add REST endpoint /my-app/api/versions /fixed\n"
+ "[HDEFECT-1234 /fixed] fix(default): change git commit /fixed username\n"
+ "[HDEFECT-1234 /fixed] style(npm): set /FIXED indentation to 4 spaces\n"
+ "[HDEFECT-1234 /fixed] docs(terraform): /fixed explain new configuration preset\n";
final String subst = "$type $scope $subject";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
// The substituted value will be contained in the result variable
final String result = matcher.replaceAll(subst);
System.out.println("Substitution result: " + result);
}
}
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