×
Namespaces

Variants
Actions

Expressão regular em Java ME

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Artigo
Tradução:
Originado de Regex in Java ME
Última alteração feita por hamishwillee em 13 Aug 2013

Este artigo visa demonstrar o uso das expressões regulares em diferentes entradas de texto fornecidas pelos usuários. Você pode utilizá-las para, por exemplo, bloquear caracteres de entrada, tais como !@#$%¨&*( ou mesmo para validar entradas de dados como um telefone, um nome, etc.

Contents

O que são Expressões Regulares?

Expressões regulares é um método formal para se especificar um padrões de texto. Facilita as comparações e filtragem de textos a fim de achar uma dada palavra, ou parte dela em um texto.

O que preciso para fazer isso em Java ME?

Em Java ME é necessário o uso de um pacote de terceiros como o 'me.regexp.*' . Ele pode ser baixado do projeto Jakarta, através deste link.

Algumas convenções da documentação

 Caracteres
   unicodeChar          Coincide com qualquer caractere Unicode idênticos
   \                    Usado para citar um meta caractere (como '*')
   \\                   Corresponde a um único caractere '\'
   \0nnn                Corresponde a um caractere octal
   \xhh                 Corresponde a um dado de 8-bits de caracteres hexadecimais
   \\uhhhh              Corresponde a um dado de 16-bits de caracteres hexadecimais
   \t                   Corresponde a um caractere de tabulação ASCII 
   \n                   Corresponde a uma nova linha ASCII
   \r                   Corresponde a um caractere de retorno ASCII 
   \f                   Corresponde a um caractere de feed  ASCII
 Classes de caracteres
   [abc]                Classe de caracteres simples
   [a-zA-Z]             Classe de caracteres com intervalos
   [^abc]               Classe de caracteres negada

NOTA: Escalas incompletas serão interpretados como "começa do zero" ou "termina com o último caractere". Ou seja, [-a] é o mesmo que [\\u0000-a], e [a-] é o mesmo que [a-\\uFFFF], [-] significa "todos os caracteres".

 Classes de caracteres padrão POSIX
   [:alnum:]           Caracteres Alfanuméricos.
   [:alpha:]           Caracteres Alfabéticos
   [:blank:]           Caracteres de espaço e tabulação.
   [:cntrl:]           Caracteres de Controle.
   [:digit:]           Caracteres Numéricos.
   [:graph:]           Caracteres que podem ser impressos e são também visíveis.
                       (Um espaço é uma impressão, mas não visível, enquanto um
                       'a' é ao mesmo tempo.)
   [:lower:]           Caracteres minúsculos do alfabeto.
   [:print:]           Caracteres imprimíveis (caracteres que não são
                       caracteres de controle.)
   [:punct:]           Os caracteres de pontuação (caracteres que não são dígitos, 
                       caracteres de controle, ou caracteres de espaço).
   [:space:]           Caracteres de espaço (tais como espaço, tabulação e formfeed)
   [:upper:]           Caracteres maiúsculos do alfabeto.
   [:xdigit:]          Caracteres que são dígitos Hexadecimais.
POSIX não-padrão de estilo da Classes de caracteres
   [:javastart:]        Início de um identificador de Java
   [:javapart:]         Parte de um identificador de Java
 Classes pré-definidas
   .         Coincide com qualquer caractere diferente de nova linha
   \w        Corresponde a uma palavra "caractere" (alfanuméricos e "_")
   \W        Corresponde a um caractere não-palavra
   \s        Coincide com um caractere branco
   \S        Coincide com um caractere não-branco
   \d        Coincide com um caractere de dígito
   \D        Coincide com um caractere de não dígito
 Casamentos nos limites das palavras ou linhas
   ^         Corresponde apenas ao início de uma linha
   $         Corresponde apenas ao final de uma linha
   \b        Corresponde apenas a início de palavra (em geral palavra é definido como [a-zA-Z0-9_])
   \B        Corresponde ao inverso de \b
 Casamentos do tipo 'o maior possível'
   A*        Corresponde A 0 ou mais vezes (greedy)
   A+        Corresponde A 1 ou mais vezes(greedy)
   A?        Corresponde A 1 ou 0 vezes (greedy)
   A{n}      Corresponde A n vezes (greedy)
   A{n,}     Corresponde A pelo menos n vezes (greedy)
   A{n,m}    Corresponde A, pelo menos, n vezes mas não mais do que m vezes (greedy)
 Casamentos do tipo 'o menor possível'
   A*?       Corresponde A 0 ou mais vezes (reluctant)
   A+?       Corresponde A 1 ou mais vezes (reluctant)
   A??       Corresopnde A 0 ou mais vezes (reluctant)
 Operadores lógicos
   AB        Corresponde A seguido de B
   A|B       Corresponde A ou B
   (A)       Usado para corresponder subexpressões
  (?:A)      Grupo de captura que pode ser salvo para referência posterior
 Referências anteriores:
   \1    Referência anterior para a 1º expressão de parêntese
   \2    Referência anterior para a 2º expressão de parêntese
   \3    Referência anterior para a 3º expressão de parêntese
   \4    Referência anterior para a 4º expressão de parêntese
   \5    Referência anterior para a 5º expressão de parêntese
   \6    Referência anterior para a 6º expressão de parêntese
   \7    Referência anterior para a 7º expressão de parêntese
   \8    Referência anterior para a 8º expressão de parêntese
   \9    Referência anterior para a 9º expressão de parêntese

Código fonte de um exemplo em prática

 /* Autor: Maicon Herverton, maiconherverton@yahoo.com.br, Brasil */
 
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import me.regexp.*;
public class Regex extends MIDlet {
 
public Regex() {
}
 
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
 
protected void pauseApp() {
}
 
protected void startApp() throws MIDletStateChangeException {
String texto = "abcdef232"; //Aqui fica o texto que você deseja verificar
RE padrao = RE("abc(\\w*)"); //Nesse caso estamos criando o padrão a ser validado o texto.
if (padrao.matcher(texto)) {
System.out.println("O texto: " + texto + " está no padrão!"); //Caso o texto esteja dentro do padrão
} else {
System.out.println("O texto: " + texto + " não está no padrão!"); //Caso o texto não esteja dentro do padrão
}
}
}
This page was last modified on 13 August 2013, at 13:39.
70 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×