Stringresultado="select * from teste where 1=1";Stringregex="(select.+)(from.+)(where.+)";Patternp=Pattern.compile(regex);Matcherm=p.matcher(resultado);while(m.find()){System.out.println(m.group(1));System.out.println(m.group(2));System.out.println(m.group(3));}
T
thingol
Consegui o que você queria. Rode o programa e veja se isso é o que você esperava.
importjava.util.*;classSplitConsideraRegex{publicstaticvoidmain(String[]args){Stringsql="seLect * FROM teste Where 1=1";String[]resultado=sql.split("(?i)(?=(select|from|where))");System.out.println("sql = "+sql);for(inti=0;i<resultado.length;++i){System.out.println(i+": ["+resultado[i]+"]");}// A expressão regular deve considerar a palavra "select" apenas, // não alguma palavra que contenha a palavra "select". // O correto seria usar "\b", como abaixo:sql="select * from teste where selected = \"frommer\" and nowhere = \"true\" ";System.out.println("sql = "+sql);resultado=sql.split("(?i)(?=\\b(select|from|where)\\b)");for(inti=0;i<resultado.length;++i){System.out.println(i+": ["+resultado[i]+"]");}}}