Ajuda com exprossões regulares

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?

Já tentou o método contains()?

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

[quote=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?
[/quote]

         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");

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)(.*)"