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*\\s*\\}";
final String string = "// Match!\n"
+ "<Component1\n"
+ " // Quotes\n"
+ " title={\"String with quotes that also has 'single quotes' inside\"}\n"
+ " description={\"\"}\n"
+ " // Single quotes\n"
+ " className={'flex justify-center items-center gap-2'}\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"
+ " // Backticks (I have another regex that's better adapted for this!)\n"
+ " href={`https://regex101.com/library/b8E1z6`}\n"
+ " // String without unnecessary brackets\n"
+ " title=\"Some string\"\n"
+ " // \"/'/` mismatch\n"
+ " content={\"Yeah this will get you an error'}\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