Expressões regulares

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

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 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 Expressão, 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 comum que gostaríamos de usar um dos metacaracteres como literal. Sequências de escape sempre start com o caractere de barra invertida (\). Ao colocar a barra invertida (que também é um metacaráter) na frente de um metacaráter, o mecanismo de expressão regular interpreta o metacaracter 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 da 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 comparar com a string do público alvo.
String de público alvo 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 nenhum caractere de escape e procura na sequência do público alvo para ver se é uma subsequência de caracteres da sequência do público alvo.

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(quem indicou) contém o seguinte valor:

http://www.abc.com/adventurenews/today.html?ad=123AZ45

Para determinar se a quem indicou representa alguém que clicou em um dos anúncios, é necessário verificar se a quem indicou contém o anúncio de string. Você poderia simplesmente usar a sequência de caracteres literal para pesquisar a sequência de caracteres do público alvo e determinar se um anúncio foi usado para direcionar o tráfego para o site. Embora isso corresponda à sequência de públicos alvos, 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 anúncio específica, simplesmente usar o anúncio literal, já que a expressão regular claramente não é suficiente. Alterar o literal para "ad=" eliminaria essa ambiguidade e resultaria na expressão fazendo apenas uma única correspondência. No entanto, mesmo isso pode não ser suficiente para garantir que a quem indicou seja parte da campanha do anúncio. Considere a seguinte quem indicou:

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 foram iniciadas como resultado da campanha do anúncio. 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: 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 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 do público alvo.

Para este metacarbonato... O expressão normal...
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.
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 literal dentro dos colchetes, ele deve vir primeiro ou por último. Por exemplo, [-0-9] testa para - e 0 a 9.

Estágio (|) Corresponder uma de duas opções a uma determinada string de público alvo. 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 público alvo, um de dois metacaracteres é usado.

Para este metacarbonato… O expressão normal…
Circumflex ou Caret (^) Corresponder ao início da string. Por exemplo, ^[Tt]ele corresponderia à string de público alvo "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 final, a string inteira do público alvo deve corresponder à expressão normal.

Correspondência de qualquer coisa

O ponto (.) é um metacaractere especial que corresponde a qualquer caractere na string do público alvo. Por exemplo, a expressão regular ^…$ corresponde a qualquer string de público alvo com exatamente três caracteres. A expressão regular "…" corresponde a qualquer string de público alvo 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 expressão normal...
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 do público alvo 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ões

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 sequência de públicos alvos. 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

Nesta página