import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?xXmi)\n"
+ "(?:\n"
+ " (?# use non-capture for details in debugging)\n"
+ " (?:\n"
+ " (?<match>\n"
+ " (?# If quoted value)\n"
+ " (?<quot_char>(?<!\\\\)[\"'])\n"
+ " (?# Quoted content)\n"
+ " (?:\n"
+ " (?:\n"
+ " (?# Match as many characters that aren't quotation char)\n"
+ " (?# or escape char as possible. )\n"
+ " (?:(?:(?!\\k<quot_char>|\\\\)).+)\n"
+ " (?:\n"
+ " (?# Match any/all escape chars that do not have the)\n"
+ " (?# quotation char following it. )\n"
+ " (?:(?:\\\\)*(?!\\k<quot_char>))?\n"
+ " (?# If there is an escape char followed by the quotation)\n"
+ " (?# quotation char match them. )\n"
+ " (?:[\\\\]\\k<quot_char>)?\n"
+ " )*?\n"
+ " )\n"
+ " )\n"
+ " (?<close_quot>\\k<quot_char>)\n"
+ " |\n"
+ " (?# if simple token)\n"
+ " (?<basic>[^ \\n]+)+\n"
+ " )\n"
+ " )\n"
+ " (?<trail_ws>[ ]+)?\n"
+ ")";
final String string = "-t1a1\n"
+ "-t2a1 -t2a2\n"
+ " -t3a1 -t3a2 \n"
+ "-t4a1 Test1value -t4a2 test4a2value -t4a3 t4a3value\n"
+ "-t5a1EscQuot \\'t5a1valueESQ\\' -t5a2EscQuot \\\"t5a2valueEDQ\\\"\n"
+ "-t6a1 \"t6a1value1DQWord1 t6a1value1DQWord1\" -t6a2SQuot 't6a2value1SQWord1 t6a2value1SQWord2 t6a2value1SQWord3 '\n"
+ "-t7a1SQuotEmpty '' -t7a2DQuotEmpty \"\"\n";
final String subst = "\\n${match}";
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