); A primeira linha, verifica a existencia de um caracter de a - z, ou seja qualquer letra do alfabeto minuscula sera considerada. A segunda linha tambem verifica a ocorrencia de um caracter, porem deve ser maiusculo.A proxima linha verifica se existe um numero de 0 a 9.Outro exemplo, quero que retorne positivo a palavra "sim", caso inicie com minusculo, ou maiusculo. Posso usar o seguinte agrupador "[sS]" e o resto da palavra de deve ser obrigatoriamente minuscula. Os exemplos abaixo retornam true. System.out.println( "sim".matches("[sS]im") ); System.out.println( "Sim".matches("[sS]im") ); Quero verificar se o valor e Sim,sim ou Yes, yes. Como fazer? Posso usar o metacaracter (ou "|"). System.out.println( "Yes".matches("[sS]im|[yY]es") ); Verificar se um nome comeca com letra maiuscula, nao importando o resto da palavra, que pode ser maiuscula e minuscula. System.out.println( "Hello".matches("[A-Z][a-zA-Z]*") ); Quero receber qualquer palavra que termina com "olho" e nao comece com "a, b ou c"; System.out.println( "olho".matches("[^abc]lho") ); Esse exemplo acima retorna "true", ja o proximo retorna falso. Pois a palavra "alho" comeca com "a". System.out.println( "alho".matches("[^abc]lho") ); Validar um Email. System.out.println( "edivando@edivando.com".matches("\\w+@\\w+\\.\\w{2,3}") ); O primeiro metacaracter "\\w+", procura por 1 ou mais caracteres, seguido pelo "@", por mais uma sequencia de caracteres, seguido por ponto "\\." seguido por 2 ou 3 caracteres.Neste exemplo quero pegar todas as palavras da String doce, que possuem a palavra "doce", nao importando se esta maiuscula ou minuscula. A classe Pattern prepara a expressao regular antes de execultar o metodo matcher. public class Regex{ public static void main(String[] args){ String doce = "Qual e o Doce mais doCe que o doce?"; Matcher matcher = Pattern.compile("(?i)doce").matcher(doce); while (matcher.find()) { System.out.println(matcher.group()); } } } Substituicoes E muito util utilizar regex junto ao metodo replace da classe String. Ficando muito mais simples sua utilizacao. Por exemplo, tenho a String: "Qual o Doce mais doCe que o doce?", e quero mudar a palavra "doce" (todas as palavras sem me importar se e maiuscula ou minuscula) por "DOCINHO". public class Arquivo2 { public static void main(String[] args){ String doce = "Qual e o Doce mais doCe que o doce?"; String r = doce.replaceAll("(?i)doce","DOCINHO"); System.out.println(r); } } Tenho uma url e quero mudar sua apresentacao de "www.system.com.br/clientes-2011.html"quero agora mostrar na forma: "http://www.system.com.br/2011/clientes.jsf". Como faco isso? Pego a antiga url e divido-a em variaveis "(www.system.com.br)/(clientes)-(2011).html", usando os parenteses (), em seguida modifico o que pode variar, no caso "clientes" e "2011", ficando assim: "(www.system.com.br)/(\\w{2,})-(\\d{4}).html". Pronto temos uma expressao regular para a antiga url. Agora e so montar a nova url, ficando assim "http://$1/$3/$2.jsf". Sendo que $1 corresponde a (www.system.com.br), $2 a (clientes) e $3 a (2011). public class Arquivo2 { public static void main(String[] args){ String url = "www.system.com.br/clientes-2011.html"; String re = "(www.system.com.br)/(\\w{2,})-(\\d{4}).html"; String r = url.replaceAll(re, "http://$1/$3/$2.jsf"); System.out.println(r); } } Retornando a url desejada. http://www.system.com.br/2011/clientes.jsf