Problemas com String.matches()  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Rafael Afonso
Virtual Machine Man
[Avatar]
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
[MSN]
thingol
Moderador

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()



[WWW]
Rafael Afonso
Virtual Machine Man
[Avatar]
Membro desde: 05/12/2002 16:03:43
Mensagens: 719
Localização: São Paulo/SP
Offline

Funcionou! Muito obrigado.

Rafael Ubiratam Clemente Afonso
---------------------------------------
GitHub
ScalaFX
LinkedIn
[MSN]
saoj
JWizard
[Avatar]

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).


Pelo menos aqui não li nada a respeito disso: http://download.oracle.com/javase/6/docs/api/java/lang/String.html#matches%28java.lang.String%29

Também em todas as outras linguagens não é assim que isso funciona.

Se quer matchear a string inteira vc usa /^regex$/

Mas seus problemas acabaram: http://mentaregex.soliveirajr.com

This message was edited 1 time. Last update was at 28/09/2011 15:15:25


Sergio A Oliveira Jr. - saoj

ExperiMENTA:

Mentawai = http://www.mentaframework.org - Full-stack Java Web Framework com Configuracão Programática
MentaQueue = http://mentaqueue.soliveirajr.com - Queue de alta-performance.
MentaLog = http://mentalog.soliveirajr.com - Non-intrusive, fast, garbage-less, colored and straightforward logging
MentaBean = http://mentabean.soliveirajr.com - Tiny ORM with SQL Builder
MentaRegex = http://mentaregex.soliveirajr.com - Perl-style regex for Java.
MentaContainer = http://mentacontainer.soliveirajr.com - Straightforward IoC, DI e Auto-Wiring
Space4J = http://www.space4j.org - Banco-de-dados de Objetos em Memória
Options-Lib = https://github.com/saoj/options-lib - Ruby classes para ter acesso as opcoes do Yahoo Finance
Selleto = http://www.selleto.com.br
Flipinion = http://www.flipinion.com
Kawai = http://www.kawaiwiki.org


[Email] [WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team