import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "CREATE\\s+TABLE[^.]*\\.(\\S*)\\s*\\((.*?)PRIMARY KEY \\(?\\(([^)]*)\\)\\)?\\s*\\)\\s*(?:WITH CLUSTERING ORDER BY \\(([^)]*)\\))?";
final String string = "CREATE TABLE abcdeg.table_v1 (\n"
+ " \"id\" text,\n"
+ " \"obj\" text,\n"
+ " \"version\" bigint,\n"
+ " output text,\n"
+ " server text,\n"
+ " PRIMARY KEY (\"id\", \"obj\", \"version\")\n"
+ ") WITH CLUSTERING ORDER BY (\"id\" ASC, \"version\" DESC)\n"
+ " AND bloom_filter_fp_chance = 0.1\n"
+ " AND comment = ''\n"
+ " AND default_time_to_live = 0\n"
+ " AND gc_grace_seconds = 864000\n"
+ " AND max_index_interval = 2048\n"
+ " AND min_index_interval = 128\n"
+ " AND read_repair_chance = 0.0\n"
+ " AND speculative_retry = '99.0PERCENTILE';\n\n"
+ "CREATE TABLE abcdeg.result_v1 (\n"
+ " \"id\" text,\n"
+ " \"obj\" text,\n"
+ " time int,\n"
+ " PRIMARY KEY ((\"id\", \"obj\"))\n"
+ ") WITH bloom_filter_fp_chance = 0.1\n"
+ " AND comment = ''\n"
+ " AND default_time_to_live = 0\n"
+ " AND gc_grace_seconds = 864000\n"
+ " AND max_index_interval = 2048\n"
+ " AND speculative_retry = '99.0PERCENTILE';";
final Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
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