import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "select\\s+(\\*|((\\w+(\\.\\w+)?)+(\\s?,\\s?\\w+(\\.\\w+)?)*)|((\\w+\\([^\\s]|(\\w+\\.\\w+)?\\))(\\s+\\,\\s+)?)+)\\s+from\\s+(\\w+(\\s?,\\s?\\w+)*\\;?)(\\s+((\\w+\\s+join)\\s+(\\w+(\\.\\w)?\\s+on\\s+(\\w+(\\.\\w+)?\\s+=\\s+\\w+(\\.\\w+)?)?)(\\s+,\\s+)?)+)?(\\s+((limit\\s+(\\w+)?\\s?(\\,\\w+\\;)?)|((where)?\\s+?([^\\;]+\\s?;))))?";
final String string = "select * from table4;\n"
+ "select * from table4,table5;\n"
+ "select table4.id from table4,table5;\n"
+ "select table4.id from table4,table5 where table4.id=table5.id;\n"
+ "select * from table4,table5 where table4.id=table5.id;\n"
+ "select * from table4,table5 where table4.id=table5.id and table4.id => 1 ;\n"
+ "select table4.id,table5.name from table4,table5 where table4.id=table5.id and table4.id>1 ;\n"
+ "select table4.id from table4,table5 where table4.id=table5.id like %ll%;\n"
+ "select table4.id from table4,table5 where table4.id=table5.id limit 1,10;\n"
+ "select table4.id from table4,table5 limit 1,10;\n"
+ "select table4.id from table4,table5 limit 1 ;\n"
+ "select table4.id from table4,table5 where id <> 1 limit 1 ;\n"
+ "select count(*) from table4,table5 where id <> 1 limit 1 ;\n"
+ "select count(*) from table4,table5 where id <> 1 having dd group by dd ;\n"
+ "select count(*) , max(table4.id) from table4,table5 where id <> 1 having dd group by dd ;\n"
+ "select * from tab1 left join tab2 on tab1.size = tab2.size where tab2.name = AAA;\n"
+ "select * from tab1 left join tab2 on tab1.size = tab2.size , right join tab2 on tab1.size = tab2.size where tab2.name = AAA and dd = dd;\n"
+ "select count(*) , max(table4.id) from table4,table5 left join tab2 on tab1.size = tab2.size , right join tab2 on tab1.size = tab2.size where id <> 1 having dd group by dd ;\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
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