import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "modelBuilder\\.Entity<(?'type'\\w+)>\\(builder =>\\n\\s*\\{(?'builder'[\\w\\W]+?)\\}\\);";
final String string = "modelBuilder.Entity<Foobar>(builder =>\n"
+ " {\n"
+ " builder.HasKey(e => e.Id).HasName(\"PRIMARY\");\n\n"
+ " builder\n"
+ " .ToTable(\"foobar\")\n"
+ " .UseCollation(\"utf8mb4_0900_ai_ci\");\n\n"
+ " builder.HasIndex(e => e.A, \"A\").IsUnique();\n\n"
+ " builder.Property(e => e.D).HasColumnType(\"datetime\");\n"
+ " builder.Property(e => e.E)\n"
+ " .HasMaxLength(255)\n"
+ " .UseCollation(\"utf8mb4_unicode_ci\");\n"
+ " builder.Property(e => e.N)\n"
+ " .HasMaxLength(255)\n"
+ " .UseCollation(\"utf8mb4_unicode_ci\");\n\n"
+ " builder.HasOne(d => d.ANav).WithOne(p => p.BNav)\n"
+ " .HasForeignKey<Foobar>(d => d.Leerling)\n"
+ " .HasConstraintName(\"Foobar_fk\");\n"
+ " });";
final String subst = "public class $1Mapping : IEntityTypeConfiguration<$1>\\n{\\n public void Configure(EntityTypeBuilder<$1> builder)\\n {\\n$2\\n}}";
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