2 pontos por GN⁺ 2023-09-12 | 1 comentários | Compartilhar no WhatsApp
  • Este artigo discute como calcular a diferença e a interseção entre duas expressões regulares (regexes).
  • O autor mostra o processo fornecendo equações e resultados como α < β = false, α = β = true, α > β = false, α & β = α ^ β = ∅, α - β = ∅.
  • O artigo também inclui uma breve introdução à seguinte gramática de expressões regulares:
    • . corresponde a qualquer caractere único
    • xy é concatenação: corresponde a x e depois y
    • x|y é alternância: corresponde a x ou y
    • x* é estrela de Kleene: corresponde a x zero ou mais vezes
    • (xyz) é agrupamento: trata xyz como um único item
    • () é a expressão regular vazia e corresponde à string vazia
    • x+ é plus de Kleene: corresponde a x uma ou mais vezes
    • x? é opcional: corresponde opcionalmente a x
    • x{n} é potência: concatena x com ele mesmo n vezes
    • x{m,n} é repetição: concatena x com ele mesmo de m a n vezes
    • [a-z0-9] é agrupamento: corresponde a qualquer caractere único dentro do grupo
    • [^a-z0-9] é agrupamento negado: corresponde a qualquer caractere único que não esteja no grupo
    • \c é escape: corresponde ao caractere especial c
    • \u001a é escape Unicode: corresponde ao caractere UTF-16 correspondente
    • a, b, c significam que todos os demais caracteres correspondem a si mesmos.
  • O artigo também menciona recursos não suportados, como âncoras, asserções de largura zero, backreferences, extração de subgrupos, busca ou correspondência parcial e outras flags que alteram o comportamento.
  • Para mais detalhes, o autor menciona consultar a página do GitHub de antimirov.
  • O autor deste artigo é Eiríkr Åsheim, conhecido como @d6 no Twitter e no Mastodon.

1 comentários

 
GN⁺ 2023-09-12
Comentário do Hacker News
  • Este artigo discute uma ferramenta para calcular a diferença e a interseção entre duas expressões regulares (regexes).
  • Usuários relataram que a ferramenta pode travar ao tentar processar regexes complexas, como as que filtram números divisíveis por 3.
  • A ferramenta pode ser usada para gerar uma hierarquia de classes de strings útil para validar tipos específicos de cadeias, como endereços de e-mail ou URLs.
  • Um usuário criou uma demonstração web semelhante que mostra o processo de analisar regex em várias formas e, por fim, gerar código em diferentes linguagens.
  • As expressões regulares foram reconhecidas por sua capacidade de reunir teorias matemáticas complexas em uma interface prática, semelhante à álgebra linear.
  • Alguns usuários se surpreenderam com a complexidade das regexes de união e interseção geradas pela ferramenta, e sugeriram que produzir uma expressão regular mínima pode ser um desafio ainda maior.
  • A ferramenta fornece uma representação gráfica do Deterministic Finite Automaton (DFA) para as regexes dadas, o que os usuários consideraram impressionante.
  • Alguns usuários perceberam que a ferramenta tinha dificuldade para lidar com regexes de URLs e endereços de e-mail sintaticamente válidos.
  • Foi sugerido desativar o recurso de sugestões automáticas no campo de entrada de regex para melhorar a usabilidade em dispositivos móveis.
  • Um usuário compartilhou sua experiência usando o conceito de interseção de regex para escrever a lógica de validação de uma configuração de "filtro de regex de IP", o que ajudou a evitar reclamações de usuários de que o filtro não funcionava.