JavaRush /Blogue Java /Random-PT /Expressões regulares em Java
terranum
Nível 28
Milan

Expressões regulares em Java

Publicado no grupo Random-PT
RegExUma expressão regular é um tipo de padrão que pode ser aplicado a texto (String, em Java). Java fornece o pacote java.util.regex para correspondência de expressões regulares. As expressões regulares são muito semelhantes à linguagem de programação Perl e são muito fáceis de aprender. Uma expressão regular corresponde ao texto (parte dele) ou não. * Se uma expressão regular corresponder a um trecho de texto, poderemos encontrá-la. ** Se a expressão regular for composta, podemos descobrir facilmente qual parte da expressão regular corresponde a qual parte do texto.

Primeiro exemplo

A expressão regular " [a-z] +" corresponde a todas as letras minúsculas do texto. [a-z]significa qualquer caractere de aaté zinclusive e +significa "um ou mais" caracteres. Vamos supor que fornecemos a string "code 2 learn java tutorial". Como fazer isso em Java Primeiro, você deve criar um modelo:
import java.util.regex.*;
Pattern p = Pattern.compile([a-z]+);
Em seguida você deve criar matcherpara o texto enviando uma mensagem no diagrama:
Matcher m = p.matcher(“code 2 learn java tutorial”);
NOTA: Nenhum deles possui construtores Pattern, Matchernós os criamos usando métodos de classe Pattern. Pattern Class:O objeto de classe constitui uma representação de uma expressão regular. A classe Pattern não fornece nenhum construtor público. Para criar um modelo, você deve primeiro chamar um dos métodos estáticos públicos, que então retorna um objeto da classe Pattern. Esses métodos usam uma expressão regular como argumento. Matcher Class:O objeto Finder é um mecanismo que interpreta o padrão e executa operações de correspondência na string de entrada. Como Patternuma classe, Matchernão possui construtores públicos. Você obtém um objeto Matcherchamando um método matcherem uma classe object Pattern. Depois de concluir essas etapas e agora termos uma instância da classe Matcher m , podemos verificar se o padrão foi encontrado ou não e, em caso afirmativo, em que posição, etc. m.matches()retorna verdadeiro se o padrão corresponder à string inteira, caso contrário, falso. m.lookingAt()retorna verdadeiro se o padrão corresponder ao início da string; caso contrário, retorna falso. m.find ()retorna verdadeiro se o padrão corresponder a qualquer parte do texto.

Encontrando uma correspondência

Após uma correspondência bem-sucedida, m.start() retornará o índice do primeiro caractere correspondido e m.end() retornará o índice do último caractere correspondido, mais um. Se uma tentativa mal sucedida foi feita e nenhuma correspondência foi encontrada, m.start()eles m.end()lançarãoIllegalStateException
  • Isso é RuntimeExceptionpara que você não precise pegá-lo.
Pode parecer estranho m.end()retornar o índice do último caractere correspondente mais um, mas é exatamente isso que a maioria dos arquivos String.
  • Por exemplo,“Now is the time“.substring(m.start(), m.end())
retornará a mesma string. Vamos dar uma olhada no código:
import java.util.regex.*;

public class RegexTest {
    public static void main(String args[]) {
        String pattern = "[a-z]+";
        String text = "code 2 learn java tutorial";
        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(text);
        while(m.find()) {
            System.out.print(text.substring(m.start(), m.end()) + "*");
        }
    }
}
Output: code*learn*java*tutorial*

Métodos Adicionais

Se houver uma correspondência, então:
  • m.replaceFirst(replacement)retorna uma nova string, onde a primeira substring que corresponde ao padrão será substituída porreplacement
  • m.replaceAll(replacement)retorna uma nova string, onde cada substring que corresponde ao padrão será substituída
  • m.find(StartIndex)encontre a próxima correspondência começando no índice especificado
  • m.reset()redefine o modelo
  • m.reset(NewText)redefine o localizador e fornece um novo texto (talvez String, StringBufferou CharBuffer)

Sintaxe de expressão regular

  • ^Corresponde ao início de uma linha.
  • $Corresponde ao final da string.
  • .Corresponde a qualquer caractere único, exceto nova linha. Usar a opção m permite corresponder a uma nova linha.
  • [...]Corresponde a qualquer caractere único entre parênteses.
  • [^ ...]Corresponde a qualquer caractere único que não esteja entre parênteses.
  • \AComece a linha inteira.
  • \zFim de linha inteira.
  • \ZO fim de toda a linha, exceto o terminador de linha final.
  • re*Corresponde a 0 ou mais ocorrências da expressão anterior.
  • re+Uma ou mais correspondências da expressão anterior.
  • re?Corresponde 0 ou 1 ao local da expressão anterior.
  • re{n}Corresponde exatamente a N O número de ocorrências da expressão anterior.
  • re{n,}Corresponde a N ou mais ocorrências da expressão anterior.
  • re{n, m}Corresponde a pelo menos n e no máximo m ocorrências da expressão anterior.
  • a|bCorresponde a a ou b.
  • (re)Um grupo de expressões regulares e lembrando o texto encontrado.
  • (?: re)Grupos de expressões regulares que não lembram o texto encontrado.
  • (?> re)Corresponde a um padrão independente sem retorno.
  • \wCorresponde letras e números [a-zA-Z_0-9].
  • \WEstas não são letras ou números.
  • \sCorresponde aos espaços. Equivalente a [\t\n\r\f].
  • \SNão são caracteres de espaço em branco.
  • \dCorresponde aos números. Equivalente a [0-9].
  • \DNão corresponde aos números.
  • \GCorresponde ao ponto da última partida.
  • \nCorresponde à nova linha.
  • \bCorresponde em um limite de palavra.
  • \BCorresponde fora de um limite de palavra.
  • \n, \t, etc.Caracteres de nova linha, retorno de carro, tabulação, etc.
  • \QCite todos os caracteres antes de \E.
  • \EA citação iniciada com \Q termina.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION