Utilizando Pattern

7 respostas
blima10

Olá,

Pessoal gostaria de passar como parametro para o Pattern.compile() a seguinte expressão:

L(L+D)* -------> letra(letra+digito)*

sendo apenas sei detectar letras…
se alguem conhecer e poder me ajudar a construir eu agradeço!!!

obrigado!

7 Respostas

T

O básico é assim:

[A-Z][A-Z0-9]*

É melhor você aprender direito. Veja http://aurelio.net/er

blima10

Não funcionou cara!
se eu colocar uma palavra começando com letra ele passa.

olha meu codigo e me diga o que está errado

public class Testes {
    public static void main(String[] args) {

        String palavra= "1a";
        String x [] = palavra.split("");
        Pattern p = Pattern.compile("[a-zA-Z][A-Z0-9]*");
        Matcher m = p.matcher(palavra);

        while(m.find()){
            System.out.println(palavra + " = ID");
        }
    }
}
T

Espera um pouco.

A sua expressão original não diz que você quer uma letra seguida de zero ou mais letras ou dígitos?

A melhor forma para você criar uma expressão regular é criar uma lista de strings que batem e strings que não batem com a expressão regular que você quer construir. Aí você testa a expressão contra essas duas listas.

Por exemplo, se bem entendi o que você disse (mas não o que você queria dizer - realmente não entendi), você queria que a expressão batesse com:

A
A9

mas não com

9
9A

ou coisas parecidas.

T

E a propósito, por que você usou split ("")? Isso cria uma lista de strings com 1 caracter cada, o que provavelmente não é o que você quer.

“abcde123”.split ("") retorna um array contendo as strings “a”, “b”, “c”, “d”, “e”, “1”, “2”, “3”

blima10

Desculpa pelo split
eu sei o que ele faz é porque estou testando aqui e esqci de retira-ló ao colar meu codigo aqui!

é realmente isso que eu quero!

Ex:
Correto
ab
a5b
ab5

Errado
9
9a
*a
-a
a-

Entendeu?

Gostaria que ele não imprimi-se a palavra quando errado!

T

Ponha o split correto (não com “”), e mostre uma string de entrada. Que eu saiba, o seu padrão está quase certo (você precisaria, na verdade, de “[a-zA-Z][a-zA-Z0-9]*”, mas é apenas uma sutileza), e o código está quase certo, exceto pelo split, que não pode ficar assim.

blima10
Cara consegui Fiz algumas modificações e funcionou olha como ficou
public class Testes {
    public static void main(String[] args) {

        String palavra= "a+";
//        String x [] = palavra.split("");
        Pattern p = Pattern.compile("[a-zA-Z][A-Z0-9]*");
        Matcher m = p.matcher(palavra);

        if(m.matches()){
            System.out.println(palavra + " = ID");
        }
    }
}

Muito obrigado pela ajuda...

Se precisar para implementar algo futuro posso contar com sua ajuda?

abraço!

Criado 12 de maio de 2009
Ultima resposta 12 de mai. de 2009
Respostas 7
Participantes 2