Pagina inicial » Codificação » Guia do iniciante para a expressão regular (Regex)

    Guia do iniciante para a expressão regular (Regex)

    Uma expressão regular é um conjunto de caracteres que formam um padrão que pode ser pesquisado em uma string. Regex pode ser usado para validação como validar números de cartão de crédito, por procurar ou seja, através de combinações de texto complexas e para substituindo texto combinado com outra string. Ele também tem um ótimo suporte a vários idiomas - aprenda uma vez e você pode usá-lo em muitas linguagens de programação.

    Eu vi poucas pessoas darem uma primeira olhada no regex e ignorá-lo completamente. Eu não os culpo; A sintaxe do regex é complexa e fará com que muitos se encolham como aquelas linguagens de linha de comando, só que pior. Mas então cada coisa nova é assustadora e parece impossível aprender a princípio. Então, tomando emprestadas as palavras de Horácio, direi isso; Comece, seja ousado, e aventure-se a ser sábio.

    Sobre o Regex

    O Regex teve suas raízes na neurociência e na matemática e só foi implementado na programação em 1968 por Ken Thompson no editor de texto QED para pesquisa de texto. Agora é parte de muitas linguagens de programação como Perl, Java, Python, Ruby e JavaScript.

    Vamos ver alguns exemplos de como o regex funciona.

    Eu vou estar usando JavaScript nos meus exemplos. Agora, para passar de nível iniciante, você precisa aprender todo o caracteres, classes, quantificadores, modificadores e métodos usado na regex. Aqui está um link para a página Expressão Regular da Mozilla Developer Network, onde você pode ver uma tabela contendo todos eles. Você também pode consultar a planilha de cheats no final deste post com os caracteres mais usados.

    Vamos ver um exemplo simples com uma explicação. Este é um regex.

    Isto é o que o regex acima irá procurar em uma linha, um caractere 'B' seguido por pelo menos um de qualquer caractere entre (e incluindo) 'a' a 'z', 'A' a 'Z' e números 0 a 9.

    Aqui está uma amostra de correspondências em uma linha destacada:

    Cesta, bulbo, B12 Vitamina, BaSO4, N BC empresa

    O regex acima irá parar a pesquisa em Cesta e retornar uma resposta positiva. Isso é porque o modificador global 'g'tem que ser especificado se você quiser que o regex analise todas as correspondências possíveis.

    Agora, vamos ver como usar essa expressão em JavaScript. o teste método vai: se encontrou um retorno de correspondência verdade, outro falso.

     var input = "sua sequência de teste", regex = / B [a-zA-Z \ d] + /; if (! regex.test (input)) alerta ('Nenhuma correspondência encontrada'); outro alerta ('Uma correspondência é encontrada');

    Vamos tentar outro método: partida retorna as correspondências encontradas em uma matriz.

     var input = "sua sequência de teste", regex = / B [a-zA-Z \ d] + / g, / * Eu adicionei o modificador global 'g' à regex para obter todas as correspondências * / ary = input.match (regex); if (ary === null) alert ('Nenhuma correspondência encontrada'); outro alerta ('correspondências são:' + ary.toString ());

    Como sobre corda substituir? Vamos tentar isso com regex agora.

     var input = "sua string de teste", regex = / B [a-zA-Z \ d] + / g; alerta (input.replace (regex, "#"));

    Abaixo está um codepen para você ajustar. Clique na guia "JavaScript" para visualizar o código JS.

    Exercícios

    Para exercícios, você pode google “exercícios de regex” e tente resolvê-los. Veja o que esperar ao tentar esses exercícios, de acordo com os níveis de dificuldade.

    Basic

    Para mim ser capaz de validar uma senha é o suficiente para começar. Portanto, valide uma senha de 8 a 16 caracteres, alfanumérica com a sua opção de caracteres especiais permitidos.

    Intermediário

    É aqui que você deve praticar com mais dados do mundo real e aprender mais alguns pontos de regex como lookahead, lookbehind assertions e grupos correspondentes;

    • Validar códigos PIN, hexadecimais, datas, ID de email, ponto flutuante.
    • Substituir zero à direita, espaços em branco, um conjunto de palavras correspondentes
    • Extrair partes diferentes de um URL

    Avançado

    Você pode otimizar as soluções dos exercícios acima - o regex mais adequado para o e-mail tem milhares de caracteres - assim levá-lo tanto quanto você se sentir confortável e isso é o suficiente. Você também pode tentar:

    • Analisando HTML ou XML (mesmo no mundo real, é desencorajado fazê-lo porque usar uma expressão regular para analisar uma linguagem não regular como HTML nunca o tornará a prova de erros. Além disso, a análise XML é uma tarefa difícil, mais adequada para usuários avançados)
    • Substituindo tags
    • Removendo comentários (exceto os comentários condicionais do IE)

    Ferramentas

    Ferramentas para visualizar regex são uma das coisas mais legais para mim. Se você já se deparar com um regex longo e complexo, basta copiá-los e colá-los em uma dessas ferramentas e você poderá visualizar o fluxo com clareza. Além disso, existem muitas ferramentas que você pode usar para mexer com o código de regex. Eles também mostram exemplos e cheatsheets, juntamente com recursos de compartilhamento.

    • Debuggex - desenha um diagrama regex conforme sua entrada e você pode fazer um compartilhamento rápido para StackOverflow desde lá.
    • RegExr - Você pode testar seu regex com este. Ele também tem referência, uma planilha e exemplos para ajudá-lo.
    • Refiddle - No momento, além do JavaScript, você também pode mexer com as versões Ruby e .NET do regex nele.

    Cheatsheet Regex

    Símbolo Definição
    [abc] Qualquer caractere único a, b ou c
    [^ abc] Qualquer caractere diferente de a, b ou c
    [a-z] Personagem entre (incluindo) a z
    [^ a-z] Caractere, exceto de a a z
    [A-Z] Caráter entre (incluindo) A a Z
    . Qualquer caractere único
    \ s Qualquer caractere de espaço em branco
    \ S Qualquer caractere que não seja espaço em branco
    \ d Qualquer dígito 0 a 9
    \ D Qualquer não dígito
    \W Qualquer caractere de palavra (letra, número e sublinhado)
    \W Qualquer caractere sem palavra
    (…) Capture tudo em anexo
    (a | b) Corresponder a ou b
    uma? O caractere a está ausente ou presente uma vez
    uma* O caractere a é ausente ou está presente mais vezes
    uma+ O caractere a está presente uma ou mais vezes
    um 3 3 ocorrências de caráter consecutivamente
    a 3, 3 ou mais ocorrências de caráter consecutivamente
    um 3,6 3 a 6 ocorrências de caráter consecutivamente
    ^ Início da cadeia
    $ Fim da cadeia
    \ b Um limite de palavra. Se um caractere for o caractere de última ou primeira palavra de uma palavra ou Se um caractere estiver entre um caractere de palavra ou de não-palavra
    \ B Limite sem palavras

    Agora leia: Expressões regulares: 30 ferramentas e recursos úteis