import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "AND[ ]+(\\([ ]*\\[\\[[A-Z0-1_]+\\]\\][ ]+=[ ]+'[ ]*'[ ]+OR[ ]+[A-Z0-1_]+[ ]+=[ ]+\\[\\[[A-Z0-1_]+\\]\\][ ]*\\)|\\([ ]*[A-Z0-1_]+[ ]+=[ ]+\\[\\[[A-Z0-1_]+\\]\\][ ]+OR[ ]+\\[\\[[A-Z0-1_]+\\]\\][ ]+=[ ]+'[ ]*'[ ]*\\))";
final String string = "SELECT \n"
+ "ZT1_CODIGO, ZT1_NOME, A3_NREDUZ, ZT1_EMAIL, ZT1_DEPART, ZT1_SENHA, ZT1_CODGRU, ZT2_NOME, ZT1_DDD, ZT1_DDI, ZT1_TEL, ZT1_LOGIN, SUBSTR(ZT3_CODENT,3,6) A3_COD \n"
+ "FROM TABSX2(ZT1) ZT1 \n"
+ "LEFT JOIN TABSX2(ZT3) ZT3 \n"
+ "ON ZT3.ZT3_ENTIDA = 'SA3' AND ZT1.ZT1_CODIGO = ZT3.ZT3_CODIGO AND ZT3.D_E_L_E_T_ <> '*' \n"
+ "LEFT JOIN TABSX2(SA3) SA3 \n"
+ "ON SA3.A3_COD = SUBSTR(ZT3.ZT3_CODENT,3,6) AND SA3.D_E_L_E_T_ <> '*' \n"
+ "LEFT JOIN TABSX2(ZT2) ZT2 \n"
+ "ON ZT2.ZT2_CODIGO = ZT1.ZT1_CODGRU AND ZT2.D_E_L_E_T_ <> '*' \n"
+ "WHERE ZT1.D_E_L_E_T_ <> '*' AND (ZT1_CODGRU = [[GRUPO]] OR [[GRUPO]] = '') AND ([[GRUPO]] = '' OR ZT1_CODGRU = [[GRUPO]] ) AND ZT1_CODGRU = [[GRUPO]]";
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