Expressao regular nao funciona

E ae pessoal blz? Estou tendo problema com expressoes regulares…ja debuguei o codigo linha a linha e ele nao entra no if mesmo a condicao sendo verdadeira…

if (Pattern.matches("P*", "Palavra")) {
      completion.addElement("Palavra");
}

Fiz algo errado?

Utilize o ‘.’ depois do P!

if (Pattern.matches("P.*", "Palavra")) { System.out.println("LOL"); }

[quote=moskaBR]E ae pessoal blz? Estou tendo problema com expressoes regulares…ja debuguei o codigo linha a linha e ele nao entra no if mesmo a condicao sendo verdadeira…

if (Pattern.matches("P*", "Palavra")) {
      completion.addElement("Palavra");
}

Fiz algo errado?[/quote]
Da forma como está fazendo o método só vai retornar true se sua entrada for zero ou mais 'P’s, por exemplo, as seguintes expressões retornariam true: Pattern.matches("P*", "P"); // Um P Pattern.matches("P*", "PPPP"); // Vários Ps Pattern.matches("P*", ""); // Nenhum P
Se quiser que a expressão retorne true quando exista um P seguido de qualquer outro caractere deve fazer como sugerido pelo rafadelnero: Pattern.matches("P.*", "Palavra"); // Um P seguido de qualquer sequência de caracteres

Pq não usar o startsWith?

if ("Palavra".startsWith("P")) {
      completion.addElement("Palavra");
}

Funcionou perfeitamente…esqueci deste detalhe, adicionando o ponto foi certinho…valew