Show Menu
TÓPICOS×

Regular Expressions

Expressões regulares são usadas em todos os campos de pesquisa da análise de big data, incluindo os painéis da entidade de consulta.

Sobre expressões regulares

Uma expressão regular é um padrão de texto, que consiste em uma combinação de caracteres alfanuméricos e caracteres especiais conhecidos como metacaracteres, que localiza padrões e extrai subsequências de texto. Expressões regulares são amplamente usadas na programação de computadores e são parte integrante de línguas como a Perl.
Para identificar e extrair padrões complexos de sequência de caracteres, o servidor da análise de big data usa expressões regulares em algumas das transformações e condições. O que se segue é um breve guia para as expressões regulares.
Este apêndice não é uma introdução abrangente a expressões regulares. Uma referência particularmente boa é a publicação O'Reilly Mastering Regular Expressions, segunda edição de Jeffrey E. F. Friedl.

Terminologia de Expressão Regular

Termo
Definição
Literal
Um literal é um caractere que usamos em uma expressão regular para localizar uma sequência específica de caracteres. Por exemplo, para encontrar o produto no, shop/products.htmlo produto de string é um literal, ou o que estamos literalmente procurando na string.
Metacaractere
Um metacaractere é um caractere especial que tem uma interpretação exclusiva no contexto de expressões regulares. Por exemplo, o ponto (.) é um metacaractere usado para corresponder a qualquer caractere.
Sequência de escape
Uma sequência de escape é simplesmente uma forma de dizer ao mecanismo de expressão regular que gostaríamos de usar um dos metacaracteres como literal. As sequências de escape sempre começam com o caractere de barra invertida ( \ ). Ao colocar a barra invertida (que também é um metacaractere) na frente de um metacaractere, o mecanismo de expressão regular interpreta o metacaractere escapado como um literal. Por exemplo, se você deseja corresponder ao período de metacaractere ( . ), é necessário usar uma sequência de escape. No entanto, para corresponder a um dos pontos na string 168.196.0.11, você pode usar a expressão regular que consiste em uma barra invertida e um ponto ( \. ).
Padrão
Esta é a terminologia abreviada para a expressão regular. Em essência, uma expressão regular é um padrão que você está tentando corresponder à string de destino.
String de destino
Esse termo se refere à string que estamos pesquisando para localizar o padrão desejado.

Sobre correspondência literal

A correspondência literal usa uma sequência literal sem caracteres de escape e procura na sequência de destino para ver se ela é uma subsequência de caracteres de destino.
Neste exemplo, você vê como a correspondência literal funciona. Considere uma situação na qual os dados são coletados do tráfego do site, e o campo cs(referrer) contém o seguinte valor:
http://www.abc.com/adventurenews/today.html?ad=123AZ45
Para determinar se o referenciador representa alguém que clicou em um dos anúncios, é necessário verificar se o referenciador contém o anúncio de string. Você poderia simplesmente usar a sequência de caracteres literal para pesquisar a sequência de caracteres de destino e determinar se um anúncio foi usado para direcionar o tráfego para o site. Embora isso corresponda à string de destino, ela corresponderia em dois locais e, portanto, é ambígua e pode levar a falsos positivos.
O URL a seguir contém o anúncio de string em dois lugares diferentes:
http://www.abc.com/ad vertnews/today.html?ad =123AZ45
Portanto, se você estiver tentando determinar quais sessões foram iniciadas como resultado de uma campanha de publicidade específica, simplesmente usar o anúncio literal como a expressão regular claramente não é suficiente. Alterar o literal para "ad=" eliminaria essa ambiguidade e resultaria na expressão fazendo apenas uma correspondência. No entanto, mesmo isso pode não ser suficiente para garantir que o referenciador seja parte da campanha de publicidade. Considere o seguinte referenciador:
http://www.xyz.com/hello.html?pad=something
Você não tem nenhum controle sobre os URLs que outras pessoas podem estar usando para criar links para o site. A correspondência literal é um mecanismo muito simples para localizar sessões que começaram como resultado da campanha de publicidade. A seção a seguir discute como usar metacaracteres para obter uma correspondência mais flexível e poderosa.

Uso de metacaracteres

Um metacaractere é um caractere especial em um programa ou campo de dados que fornece informações sobre outros caracteres.
metacaractere
descrição
. (ponto)
Corresponde a um único caractere, por exemplo: corresponde re:x.z a "xyz" ou "xxz".
* (estrela)
Corresponde a um ou mais caracteres, por exemplo: corresponde re:Z* a "ZZZ".
? (curinga)
Corresponde a 0 ou 1 da expressão anterior para forçar a correspondência mínima, por exemplo: xy?z corresponde a "xy" e "xyz".
Expressões regulares comuns adicionais também podem ser usadas para criar strings de pesquisa mais complexas.
Listas, Intervalos e OU
A correspondência literal permite que você procure uma única string, mas colchetes, traços e barra vertical permitem que você defina uma lista de coisas a serem procuradas na string de destino.
Para este metacarbonato... O processador de expressões regulares...
Colchetes quadrados ([ ]) Corresponder a qualquer um dos caracteres dentro do colchete com uma única posição de caractere. Por exemplo, [AB] é uma instrução para corresponder à letra A ou à letra B e [0123456789] diz corresponder a qualquer caractere no intervalo de 0 a 9.
Hífen (-)
Corresponder a um intervalo de caracteres. Assim, em vez de escrever [0123456789], podíamos simplesmente escrever [0-9].
Isso pode ser estendido para intervalos de caracteres e vários intervalos dentro de um conjunto de colchetes. Por exemplo, [0-9A-C] corresponde aos caracteres de 0 a 9 e de A a C.
Observação: Para testar se há um traço (-) como literal dentro dos colchetes, ele deve vir primeiro ou por último. Por exemplo, [-0-9] testa para - e 0 a 9.
Tubo (|) Corresponder uma de duas opções a uma determinada string de destino. Por exemplo, b|nat corresponde a bat ou nat.
Considere os exemplos a seguir:
Padrão
String
Correspondência
Win9 [58]
OS=Win95
Win95
Win95
8
OS=Win98
[0-9]
Mozilla/3.0
3
Lição [A-Z]
Lição a
Nenhuma correspondência porque a minúsculo não está no intervalo de A a Z maiúsculo.
Negação
A negação é uma forma de dizer que você gostaria de corresponder a qualquer item, exceto aos caracteres especificados. O metacaractere de negação, o circunflexo ou o caractere circunflexo ( ^ ), é usado como o primeiro caractere entre colchetes para dizer que você gostaria que a correspondência fosse qualquer coisa, exceto os caracteres restantes entre colchetes. Por exemplo, para corresponder qualquer caractere, exceto um ponto-e-vírgula ( ; ), você escreveria
Isso corresponderia a qualquer caractere, exceto o ponto-e-vírgula.
Posicionamento
Para forçar uma correspondência ao início ou ao fim de uma string de destino, um de dois metacaracteres é usado.
Para este metacarbonato...
O processador de expressões regulares...
Circumflex ou Caret ( ^ )
Corresponder ao início da string. Por exemplo, ^ [Tt] ele corresponderia à string de destino "O início", mas não corresponderia a "Este é o início".
Símbolo de moeda ( $ )
Corresponder ao final da string. Por exemplo, [Ee] nd$ corresponderia a "Este é o fim", mas não corresponderia a "O fim é um tempo especial".
Quando a expressão regular contém ^ no início e $ no final, a string de destino inteira deve corresponder à expressão regular.
Correspondência de qualquer coisa
O ponto (.) é um metacaractere especial que corresponde a qualquer caractere na string de destino. Por exemplo, a expressão regular ^…$ corresponde a qualquer string de destino com exatamente três caracteres. A expressão regular "..." corresponde a qualquer string de destino que contenha pelo menos três caracteres.
Padrões repetidos
Metacaracteres de iteração permitem que você corresponda a um padrão mais de uma vez.
Para este metacarbonato... O processador de expressões regulares...
Ponto de interrogação (?) Não corresponde a nenhuma instância ou a uma instância do caractere imediatamente anterior ao metacaractere (?). Por exemplo, o padrão rea?d corresponde a red e read.
Asterisco (*) Corresponder a zero ou mais ocorrências do caractere imediatamente antes do metacaractere (*). Por exemplo, o padrão [0-9]* corresponde a qualquer número de caracteres de 0 a 9 (qualquer número inteiro).
Plus (+) Corresponder uma ou mais ocorrências do caractere ou intervalo anterior. Por exemplo, o padrão três+ corresponderia a três, mas não a through.
{n}
Corresponder ao caractere de processo ou intervalo exatamente n vezes. O seguinte padrão corresponde aos números de telefone dos Estados Unidos: [0-9]{3}-[0-9]{3}-[0-9]{4}.
Embora não seja um padrão ideal, ele determina se a string de destino está no formato correto.
{n,m} Corresponder ao caractere anterior pelo menos n vezes e no máximo em m vezes. Por exemplo, fo{1,2}d corresponderia a comida e comida, mas não a comida.

Extração de padrão

A correspondência de padrões é apenas parte do poder das expressões regulares. As expressões regulares também fornecem um mecanismo para extrair partes principais de uma string de destino. Isso é feito com o uso dos parênteses esquerdo e direito. Normalmente, essas extrações são usadas como entrada em outro processo e são acessadas por meio do uso de %position% , onde position é um número inteiro que se refere à contagem de qual conjunto de parênteses correspondeu.
Considere os seguintes exemplos de extração de padrões:
Padrão String Correspondência Extração
Win(9[58]) OS=Win95 Win95 %1% = 95
(Win)(95|8) OS=Win98 Win98
%1% = Win
%2% = 98
Mozilla/([0-9]).([0-9]) Mozilla/3.0 Mozilla/3.03
%1% = 3
%2% = 0
Lição([A-Z]) Lição a Nenhuma correspondência porque a minúsculo não está no intervalo de A a Z maiúsculo