Expressões regulares  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Marques
Virtual Machine Man
[Avatar]

Membro desde: 05/09/2002 10:13:28
Mensagens: 635
Offline

Lista,

No trecho abaixo eu verifico se a minhaString contém letras e números. Agora preciso de montar uma expressão regular em que eu verifique se minhaString contem 4 LETRAS MAÍUSCULAS seguidas por 7 números entre zero e nove. Vc pode me ajudar?

Muito obrigado,

Marques
peron
JavaGuru
[Avatar]

Membro desde: 09/06/2005 09:39:31
Mensagens: 236
Localização: Blumenau/SC
Offline

[A-Z]{4}[0-9]{7}

Att.

Marcos Peron
http://www.marcosperon.com





"Dizem que, no início, Deus criou o céu e a Terra. Mentira! Na verdade, no início Deus criou Java. Onde achas que ele programou o mundo, oras?"
[WWW] [Yahoo!] [MSN] [ICQ]
Marques
Virtual Machine Man
[Avatar]

Membro desde: 05/09/2002 10:13:28
Mensagens: 635
Offline

valeu peron!!!!!!!!!!!!!!!
Mantu
GUJ Ranger
[Avatar]

Membro desde: 27/03/2006 09:05:16
Mensagens: 961
Localização: São Paulo/SP
Offline

Agora que conseguiu resolver sua dúvida, dê uma consultada nesse link
http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html
Aqui tem todas as regras para produção de expressões regulares em Java

[]'s
Mantu

"Vou lançar o 'Caguei'. Caguei para o 'Cansei'". Luciano Camargo
"O povo votou contra a opinião pública". Um certo jornalão da mídia golpista, a respeito da vitória de um certo cadidato a presidente do Brasil.

[Email] [MSN] [ICQ]
akumaldo
Java Ninja
[Avatar]

Membro desde: 09/06/2006 20:30:06
Mensagens: 283
Offline

Poderiam me explicar como funciona esse negócio de expressões regulares...não entendi muito bem!
agradeço pessoal!

"O homem se resume em sua vontade de poder...Vontade de poder e nada mais! Viva a vida, morte a verdade..."
Nietzsche
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Uma analogia é que eles são uma versão "turbinada" daquelas "*" e "?" que servem para filtrar nomes de arquivos.

Por exemplo, se você quer tudo que termina por ".doc", você usaria o "wildcard" "*.doc". O equivalente em expressões regulares seria:

.*\.doc$

. = qualquer caracter
* = 0 ou mais vezes
\. = o ponto
doc = o que deve bater exatamente (doc)
$ = o fim da expressão.



[WWW]
akumaldo
Java Ninja
[Avatar]

Membro desde: 09/06/2006 20:30:06
Mensagens: 283
Offline

thingol wrote:Uma analogia é que eles são uma versão "turbinada" daquelas "*" e "?" que servem para filtrar nomes de arquivos.

Por exemplo, se você quer tudo que termina por ".doc", você usaria o "wildcard" "*.doc". O equivalente em expressões regulares seria:

.*\.doc$

. = qualquer caracter
* = 0 ou mais vezes
\. = o ponto
doc = o que deve bater exatamente (doc)
$ = o fim da expressão.





poderia me dar um exemplo??como eu usaria??
eu entendi mais ou menos...é como um filtro né???

abraço!
peron
JavaGuru
[Avatar]

Membro desde: 09/06/2005 09:39:31
Mensagens: 236
Localização: Blumenau/SC
Offline

Marques wrote:
Marques


olha o exemplo ai..

Marcos Peron
http://www.marcosperon.com





"Dizem que, no início, Deus criou o céu e a Terra. Mentira! Na verdade, no início Deus criou Java. Onde achas que ele programou o mundo, oras?"
[WWW] [Yahoo!] [MSN] [ICQ]
Mantu
GUJ Ranger
[Avatar]

Membro desde: 27/03/2006 09:05:16
Mensagens: 961
Localização: São Paulo/SP
Offline

Akumaldo,
É bem por aí. Suponha por exemplo que vc queira validar uma String que contenha um código de cor hexadecimal(#F456FD, por exemplo). Perceba que esse código tem o seguinte padrão:
-Tem 7 caracteres
-O primeiro caractere é sempre o "#"
-Os demais caracteres são algarismos hexadecimais
Como Verificar isso de forma fácil? Usando uma expressão regular que denote este padrão.
Em Java (Consulte o link que eu postei pro OP), uma regra suficiente para achar um código de cor hexadecimal dentro de uma String seria algo como
#[0-9A-F]{6}
Pra usar isso no Java, vc tem que passar a expressão regular(regex) como uma String. Nunca se esqueça disso!!! No caso então, na situação hipotética citada, fariámos assim em Java:

Agora, se vc quisesse que este método aceitasse (retornar true) códigos hexa independente do case das letras, teríamos:

Agora, só pra exemplificar uma coisinha, imageine que queiramos aceitar também uma String que seja um código de cor hexa, mas queremos ignorar eventuaisespaços em branco, tabs, quebra de linha, etc, que possam vir antes e/ou depois do nosso código (Algo como dar um trim na String. A regex seria algo assim:
\s*#[0-9A-Fa-f]{6}\s*
Em java vicaria assim:

Mas por que em Java ficou
\\s*#[0-9A-Fa-f]{6}\\s*
ao invéz de
\s*#[0-9A-Fa-f]{6}\s*
????
Porque o regex tem que ser uma String, e não existe o caracter de escape "\s", então temos que usar "\\" pra termo apenas um "\" (Como se quiséssemos cria uma String com uma data: "13\\05\\2000")
Espero ter ajudado.
Qq coisa, postem mais!

[]'s
Mantu

"Vou lançar o 'Caguei'. Caguei para o 'Cansei'". Luciano Camargo
"O povo votou contra a opinião pública". Um certo jornalão da mídia golpista, a respeito da vitória de um certo cadidato a presidente do Brasil.

[Email] [MSN] [ICQ]
akumaldo
Java Ninja
[Avatar]

Membro desde: 09/06/2006 20:30:06
Mensagens: 283
Offline

Mantu wrote:Akumaldo,
É bem por aí. Suponha por exemplo que vc queira validar uma String que contenha um código de cor hexadecimal(#F456FD, por exemplo). Perceba que esse código tem o seguinte padrão:
-Tem 7 caracteres
-O primeiro caractere é sempre o "#"
-Os demais caracteres são algarismos hexadecimais
Como Verificar isso de forma fácil? Usando uma expressão regular que denote este padrão.
Em Java (Consulte o link que eu postei pro OP), uma regra suficiente para achar um código de cor hexadecimal dentro de uma String seria algo como
#[0-9A-F]{6}
Pra usar isso no Java, vc tem que passar a expressão regular(regex) como uma String. Nunca se esqueça disso!!! No caso então, na situação hipotética citada, fariámos assim em Java:

Agora, se vc quisesse que este método aceitasse (retornar true) códigos hexa independente do case das letras, teríamos:

Agora, só pra exemplificar uma coisinha, imageine que queiramos aceitar também uma String que seja um código de cor hexa, mas queremos ignorar eventuaisespaços em branco, tabs, quebra de linha, etc, que possam vir antes e/ou depois do nosso código (Algo como dar um trim na String. A regex seria algo assim:
\s*#[0-9A-Fa-f]{6}\s*
Em java vicaria assim:

Mas por que em Java ficou
\\s*#[0-9A-Fa-f]{6}\\s*
ao invéz de
\s*#[0-9A-Fa-f]{6}\s*
????
Porque o regex tem que ser uma String, e não existe o caracter de escape "\s", então temos que usar "\\" pra termo apenas um "\" (Como se quiséssemos cria uma String com uma data: "13\\05\\2000")
Espero ter ajudado.
Qq coisa, postem mais!


Grande explicação!
acho que agora entendi bem...com isso podemos validar então um CPF???ou placa de carros....ou uma data de aniversário...um campo que só aceita nomes....é isso?

"O homem se resume em sua vontade de poder...Vontade de poder e nada mais! Viva a vida, morte a verdade..."
Nietzsche
kuchma
Moderador
[Avatar]

Membro desde: 17/01/2003 19:36:16
Mensagens: 1231
Localização: Curitiba - PR
Offline

akumaldo wrote:acho que agora entendi bem...com isso podemos validar então um CPF???ou placa de carros....ou uma data de aniversário...um campo que só aceita nomes....é isso?


Sim. Outra thread sobre o assunto:

http://www.guj.com.br/posts/list/35496.java


Marcio Kuchma

E tu, Belém-Efrata, pequena demais para figurar como grupo de milhares de Judá, de ti me sairá o que há de reinar em Israel, e cujas origens são desde os tempos antigos, desde os dias da eternidade. Mq 5:2, Miquéias, 750 AC aprox.
[WWW] [ICQ]
Junior28
What is classpath?

Membro desde: 08/07/2006 21:08:38
Mensagens: 5
Localização: Osasco
Offline

Como eu posso validar um CPF???
Eu to começado a aprender java e precisava de um método que valida-se um cpf..Brigadao!

Atenciosamente, Junior
[Email] [MSN]
cesarse
Thread.start()

Membro desde: 25/02/2005 11:22:51
Mensagens: 46
Offline

Como eu posso validar um CPF???

Com expressão regular você consegue saber se o FORMATO do cpf é válido (só contém 11 algarismos, pontos, hifen, etc).

Para saber se os números são válidos, procure por "módulo 11" na internet.

Ah, e lembre-se que cpf´s com todos os números iguais seriam válidos de acordo com o algoritmo, mas não são válidos na vida real.
andredecotia
JWizard
[Avatar]

Membro desde: 19/10/2009 14:37:32
Mensagens: 2267
Localização: São Paulo
Offline

por favor alguém conhece uma expressão regular pra validar da seguinte forma:

* tem de ter 11 números;
* nao podem ser iguais tipo 111111111111 22222222222 333333333333...

--
André AS


Analista Programador Java Web freelancer / home office
Linkedin: http://www.linkedin.com/profile/view?id=41470291&trk=tab_pro

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