Expressão regular problemática

7 respostas
M

static boolean validaX(String s) { Pattern padrao = Pattern.compile("\.\."); Matcher pesquisa; pesquisa = padrao.matcher(s); if (pesquisa.matches()) { return true; }else{ return false; } }
Por exemplo, a string “teste…” deveria retornar TRUE, mas não retorna…

Porém se eu colocasse

Pattern padrao = Pattern.compile(".*\.\..*"); //assim "teste..." funciona

7 Respostas

peczenyj

O metodo verifica se toda a string casa com este padrão.

M

Também percebi isso, porém eu achava que a regra seria a seguinte:

“Encontre a ocorrência ‘…’ na string”

Mas ele não faz isso…
Isso é uma particularidade do Java ou eu q to viajando?

peczenyj

é uma particularidade deste método.

Na verdade, nesse caso vc poderia usar o método indexOf, se for um número positivo ou 0 então a string contem a substring ‘…’ e nem precisa escapar os pontos.

M

peczenyj:
é uma particularidade deste método.

Na verdade, nesse caso vc poderia usar o método indexOf, se for um número positivo ou 0 então a string contem a substring ‘…’ e nem precisa escapar os pontos.

Prefiro usar Exp. Regular, pq to fazendo várias validações, e o arquivo vai ficar muito extenso se eu usar métodos do java para validar.

O

Tem certeza que você não prefere simplesmente fazer um:

static boolean validaX(String s) { return s.contains(".."); }

T

Use “find”, não “matches”.
find()
Olhe sempre a documentação !

M

thingol:
Use “find”, não “matches”.
find()
Olhe sempre a documentação !
Valeu!
O problema é q eu to apanhando no inglês… :frowning:

Criado 7 de agosto de 2008
Ultima resposta 7 de ago. de 2008
Respostas 7
Participantes 4