Expressões regulares

Expressões regulares são usadas em todos os campos de pesquisa do Data Workbench, incluindo os painéis de entidades 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 fazem parte de línguas como o Perl.

Para identificar e extrair padrões complexos de string, o servidor do Data Workbench usa expressões regulares em algumas transformações e condições. O que segue é um breve guia para 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 Expression, 2ª Edição de Jeffrey E. F. Friedl.

Terminologia de expressão regular

Termo Definição
Literal Um literal é um caractere usado em uma expressão regular para localizar uma sequência específica de caracteres. Por exemplo, para localizar o produto em shop/products.html, o produto da string é um literal ou o que estamos literalmente procurando na string.
Metacaractere Um metacaracter é 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 maneira de dizer ao mecanismo de expressão regular que gostaríamos de usar um dos metacaracteres como um 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 metacaracter (.), é 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 Essa é a terminologia abreviada da expressão regular. Em essência, uma expressão regular é um padrão que você está tentando corresponder em relação à string de destino.
String de destino Esse termo se refere à string na qual estamos pesquisando para localizar o padrão desejado.

Sobre a correspondência literal

A correspondência literal usa uma string literal sem qualquer caractere de escape e procura na string de destino para ver se é uma substring da string de destino.

Neste exemplo, você vê como a correspondência literal funciona. Considere uma situação em que os dados são coletados do tráfego do site, e o campo cs(referrer) contém o seguinte valor:

https://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 ver 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 destino e determinar se um anúncio foi usado para rotear o tráfego para o site. Embora isso correspondesse à string de destino, ela corresponderia em dois locais e, portanto, é ambígua e pode levar a falsos positivos.

O URL a seguir contém a string e em dois lugares diferentes:

https://www.abc.com/ad vertnews/today.html?ad =123AZ45

Assim, 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 fizesse parte da campanha publicitária. Considere o seguinte referenciador:

https://www.xyz.com/hello.html?pad=something

Você não tem 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 você pode usar metacaracteres para obter uma correspondência mais flexível e eficiente.

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: re:x.z corresponde a "xyz" ou "xxz".
* (estrela) Corresponde a um ou mais caracteres, por exemplo: re:Z* corresponde 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 procurar uma única string, mas colchetes, traços e barra vertical permitem definir uma lista de coisas a serem procuradas na string de destino.

Para este metacarbonato... O processador de expressão regular..
Colchetes ([ ]) Corresponda 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.
Traço (-)

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 um literal dentro dos colchetes, ele deve vir primeiro ou por último. Por exemplo, [-0-9] testa - e 0 a 9.

Estágio (|) Corresponda 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 Corresponder
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úscula não está no intervalo de A a Z maiúsculo.

Negação

A negação é uma maneira de dizer que você gostaria de corresponder qualquer coisa exceto os caracteres em questão. O metacaractere de negação, o circunflexo ou sinal de interpolação (^), é usado como o primeiro caractere entre colchetes para dizer que você gostaria que a correspondência fosse tudo, exceto os caracteres restantes entre colchetes. Por exemplo, para corresponder qualquer caractere, exceto um ponto e vírgula (;), você gravaria

[^;]

Isso corresponderia a qualquer caractere, exceto o ponto e vírgula.

Posicionamento

Para forçar uma correspondência para o início ou o fim de uma string de destino, um de dois metacaracteres é usado.

Para este metacarbonato… O processador de expressão regular…
Circunflexo ou Cursor (^) 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".
OBSERVAÇÃO

Quando a expressão regular contém ^ no início e $ no fim, toda a string de destino deve corresponder à expressão regular.

Correspondência de qualquer coisa

O período (.) é um metacaracter especial que corresponde a qualquer caractere na string de destino. Por exemplo, a expressão regular ^…$ corresponde a qualquer string de destino que tenha exatamente três caracteres. A expressão regular "…" corresponde a qualquer string de destino que contenha pelo menos três caracteres.

Padrões repetidos

Os metacaracteres de iteração permitem que você corresponda a um padrão mais de uma vez.

Para este metacarbonato... O processador de expressão regular..
Ponto de interrogação (?) Não corresponde a instâncias ou a uma instância do caractere imediatamente antes do metacaractere (?). Por exemplo, o padrão rea?d corresponde a vermelho 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 inteiro).
Plus (+) Corresponder a 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 até.
{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 adequado.

{n,m} Corresponder ao caractere anterior pelo menos n vezes e no máximo m vezes. Por exemplo, fo{1,2}d corresponderia a comida e alimento, mas não a comida.

Extração de padrão

A correspondência de padrões é apenas parte do poder das expressões regulares. 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 a posição é um número inteiro referindo-se à contagem de qual conjunto de parênteses foi correspondido.

Considere os seguintes exemplos de extração de padrão:

Padrão String Corresponder 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úscula não está no intervalo de A maiúsculo a Z

Nesta página