import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?<qt>['\"`])(?<string>.*?(?<!\\\\)\\k<qt>\\k<delimiter>)|\\k<delimiter>(?:[ \\t\\v])*(?<keyword>(?:const|let|function)\\s)|(?<=.*)(?:\\/\\/.*$)|(?<=.*)(?:\\/\\*+(?:.|\\s)*\\*\\/)|(?<delimiter>[;\\{\\}\\n/]|^)(?![;\\{\\}\\n/])|\\s*";
final String string = "function myFunction() {\n"
+ " let carName = \"Volvo\";\n"
+ " 'sdf'// here is a comment, string before it should still exist\n"
+ "let banana\n"
+ " const test = 'string with \"quoted substring\"'; let airplane = 'fly';\n"
+ "(\"and another string th'' as' asd 'ere\")\n"
+ "'escaped \\' character '\n"
+ "labelForStrings: {\n"
+ " `t'is a\\` \"string\"`\n"
+ " }\n"
+ "}\n\n\n\n\n"
+ "const variableShouldStillExist /*asd *****\n"
+ "* 324 @*l;;?\\\\\\\n"
+ "* multiline comment \n\n\n"
+ "*** /\n"
+ "*/\n"
+ "/* single multiline */";
final String subst = "$1$2$3$4";
final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE | 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