import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(\\w+\\s*\\n*=\\s*\\n*)\\{\\n*\\s*`((?:[^`](?!(?:\\$\\{|\\n|(?:'[^`]*\"|\"[^`]*'))))*)`\\n*\\s*\\}";
final String string = "// Match!\n"
+ "<Component1\n"
+ " // Using backticks without utilizing their functionalities\n"
+ " className={`flex justify-center items-center gap-2`}\n"
+ " description={``}\n"
+ " content={\n"
+ " `These backticks are unnecessary`\n"
+ " }\n"
+ " // This is a crime, but I did take it into account\n"
+ " horrendousFormatting\n"
+ " =\n"
+ " {`Please never do something like this`}\n"
+ "/>\n\n"
+ "// Multiple matches in a single line\n"
+ "<svg width={`100%`} height={`100%`} />\n\n"
+ "// Cases where this regex won't match:\n"
+ "<Component2\n"
+ " // Non-string property\n"
+ " disabled={isDisabled}\n"
+ " // Quotes/Single quotes with unnecessary brackets\n"
+ " // (I have another regex that's better adapted for this!)\n"
+ " href={\"https://regex101.com/library/l9MPcQ\"}\n"
+ " // String templating\n"
+ " className={`flex items-center justify-center size-5 ${iconColor}`}\n"
+ " // Escaping BOTH \" AND ' IN THE SAME STRING with backticks\n"
+ " title={`This string's backticks are \"justified\"`}\n"
+ " // Escaping line breaks with backticks\n"
+ " description={\n"
+ " `String with\n"
+ " a line break`\n"
+ " }\n"
+ " // \"/'/` mismatch\n"
+ " content={`Yeah this will turn the rest of your file into a string\"}\n"
+ ">\n"
+ " {icon}\n\n"
+ " // No match since this is not a property\n"
+ " {` `}\n\n"
+ " (Some people do this instead of using )\n"
+ "</Component2>\n";
final String subst = "$1\"$2\"";
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