Rafael Afonso
Virtual Machine Man
Membro desde: 05/12/2002 16:03:43
Mensagens: 719
Localização: São Paulo/SP
Offline
Olá:
Criei um programa para testar o método String.matches(). Minha JDK era a 1.4.2_05 Ele ficou assim:
Minha espectativa era que para "012345abc9" e "jihgfedcba" seria exibido true. Entretanto para todos ele exibiu false.
Tenho uma página HTML que usa o RegExp do Javascript:
Este código funcionou perfeitamente com as strings do meu programa. Então aparentemente o padrão está correto. Então por que o programa não funciona como deveria?
Grato,
Rafael Ubiratam Clemente Afonso
---------------------------------------
GitHub ScalaFX LinkedIn
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
É preciso ler a API com um pouco mais de atenção. "matches" requer que a STRING INTEIRA bata com o padrão, não só o início (você até pôs um "^" para forçar a bater com o início).
Você gostaria que o comportamento fosse semelhante ao da função "find" da classe java.util.regex.Matcher, que procura uma substring que bata com o padrão dentro da string desejada.
De duas uma:
- Ou você muda o padrão (para algo como ".{6}(abc|dcb).*" )
- Ou você trabalha com Pattern pat = Pattern.compile("^.{6}(abc|dcb)");
pat.matcher (strings[i]).find()
Membro desde: 09/03/2004 23:34:46
Mensagens: 2667
Localização: Chicago, EUA
Offline
thingol wrote:
É preciso ler a API com um pouco mais de atenção. "matches" requer que a STRING INTEIRA bata com o padrão, não só o início (você até pôs um "^" para forçar a bater com o início).