Leia mais sobre Datas Workbench Anúncio do fim da vida útil.
Expressões regulares são usadas em todos os campos de pesquisa do Data Workbench, incluindo os painéis de entidades de consulta.
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 Dominar expressões regulares, segunda edição por Jeffrey E. F. Friedl.
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 encontrar produto em shop/products.html, o produto de 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 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 | 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. |
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.
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 | Sequência de caracteres | 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 o cursor (^
), é 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ê escreveria
[^;
]
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] E$ corresponderia a "Este é o fim", mas não corresponderia a "O fim é um momento especial." |
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: 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. |
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 position é um número inteiro que se refere à contagem do conjunto de parênteses correspondente.
Considere os seguintes exemplos de extração de padrão:
Padrão | Sequência de caracteres | 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 |