import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?i)\\s*(\"?)(?>(?<colname>\\w+))\\1\n"
+ " \\s+\n"
+ " (?:(?<type>\\b\\w+\\b)\\s*(?:\\((?<typepars>(?:\\w|\\s|\\,|\\*)+)\\))?)\n"
+ " \\s*\n"
+ " (\\bdefault\\s+(?<defaultval>(\\(?)(null|\\w+|\\'\\s\\')+?\\)?))?\n"
+ " \\s*\n"
+ " (?:(?:\\bconstraint\\s+(\")(?<constraint_name>\\w+)\\9\\s+)?(?<nullable>not\\s+null\\b)\\s+enable)?\n"
+ " (,?)(\\s*)(?-i)$";
final String string = "\"a1\" NUMBER(10,0) CONSTRAINT \"ca1\" NOT NULL ENABLE, \n"
+ " \"a2\" NUMBER(10,0) CONSTRAINT \"ca2\" NOT NULL ENABLE, \n"
+ " \"a3\" NUMBER(14,0) DEFAULT 0 CONSTRAINT \"ca3\" NOT NULL ENABLE, \n"
+ " \"a4\" VARCHAR2(60 CHAR), \n"
+ " \"a5\" NUMBER(10,0), \n"
+ " \"a6\" NUMBER(10,0) DEFAULT 0 CONSTRAINT \"ca6\" NOT NULL ENABLE, \n"
+ " \"a7\" NUMBER(5,0) DEFAULT 0 CONSTRAINT \"ca7\" NOT NULL ENABLE, \n"
+ " \"a8\" NUMBER(5,0) DEFAULT 0 CONSTRAINT \"ca8\" NOT NULL ENABLE, \n"
+ " \"abc\" TIMESTAMP (6) DEFAULT SYSDATE NOT NULL ENABLE, \n"
+ " \"def\" CHAR(3 CHAR) NOT NULL ENABLE, \n"
+ " \"ghi\" CHAR(3 CHAR) NOT NULL ENABLE, \n"
+ " \"XML\" CLOB NOT NULL ENABLE, \n"
+ " \"jkl\" CHAR(6 CHAR), \n"
+ " \"mno\" NUMBER(*,0), \n"
+ " \"pqr\" NUMBER(*,0) DEFAULT (0) NOT NULL ENABLE, ";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.COMMENTS);
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