Ajuda com exprossões regulares

4 respostas
G

Olá,

Recebo um texto grande na aplicação e preciso localizar uma string dentro do texto, porém estou com problemas devido à acentuação, para resolver isso comecei a usar uma expressão regular, ficaria+/- como abaixo:

String testes = "(Servi)[\\p{L}](o Temporariamente Indispon)[\\p{L}](vel)";
         String teste1 = "Serviço Temporariamente Indisponível";
         if(teste1.matches(testes))
             System.out.println("OK");
         else
             System.out.println("NOT OK");

Do jeito que está aí funciona numa boa, mas se a string que quero verificar tiver algo antes ou depois ele não funciona, por exemplo:

String testes = "(Servi)[\\p{L}](o Temporariamente Indispon)[\\p{L}](vel)";
         String teste1 = "XXXX Serviço Temporariamente Indisponível. YYYYY";
         if(teste1.matches(testes))
             System.out.println("OK");
         else
             System.out.println("NOT OK");

Como fazer na minha expressão para ela prever que possam existir caracteres antes e depois do que eu preciso avaliar?

4 Respostas

luiz.portnoy

Já tentou o método contains()?

G

Não funcionou, só que dessa vez para nenhum dos dois casos.

kemperacc

gandja99:
Olá,

Recebo um texto grande na aplicação e preciso localizar uma string dentro do texto, porém estou com problemas devido à acentuação, para resolver isso comecei a usar uma expressão regular, ficaria+/- como abaixo:

String testes = "(Servi)[\\p{L}](o Temporariamente Indispon)[\\p{L}](vel)";
         String teste1 = "Serviço Temporariamente Indisponível";
         if(teste1.matches(testes))
             System.out.println("OK");
         else
             System.out.println("NOT OK");

Do jeito que está aí funciona numa boa, mas se a string que quero verificar tiver algo antes ou depois ele não funciona, por exemplo:

String testes = "(Servi)[\\p{L}](o Temporariamente Indispon)[\\p{L}](vel)";
         String teste1 = "XXXX Serviço Temporariamente Indisponível. YYYYY";
         if(teste1.matches(testes))
             System.out.println("OK");
         else
             System.out.println("NOT OK");

Como fazer na minha expressão para ela prever que possam existir caracteres antes e depois do que eu preciso avaliar?

String testes = "*(Servi)[\\p{L}](o Temporariamente Indispon)[\\p{L}](vel)*";
         String teste1 = "Serviço Temporariamente Indisponível";
         if(teste1.matches(testes))
             System.out.println("OK");
         else
             System.out.println("NOT OK");
G

Consegui…

Coloquei (.*) na frete e o no final da string e funcionou, além disso troquei a expressão anterior por ? Ficou assim:

"(.*)(Servi)?(o Temporariamente Indispon)?(vel)(.*)"
Criado 13 de maio de 2010
Ultima resposta 14 de mai. de 2010
Respostas 4
Participantes 3