\ \

..:: TWiki em português -- RegularExpression ::..

Warning: Can't find topic SelectTwikiWebs

Expressões Regulares

Introdução

Expressões regulares (ERs), diferente de simples queries, permitem que você busque por texto que combinem com um determinado padrão.

ERs são similares (mas mais poderosas) aos "coringas" usados em interfaces por linha de comando encontradas em sistemas operacionais como Unix e MS-DOS. ERs são usadas por sofisticados mecanismos de busca, assim como por muitas linguagens e ferramentas baseadas no Unix ( e.g., awk, grep, lex, perl, e sed ).

Exemplos

compan(y|ies) Busca por company, companies
(peter|paul) Busca por peter, paul
bug* Busca por bug, bugs, bugfix
[Bb]ag Busca por Bag, bag
b[aiueo]g A segunda letra é uma vogal. Combina bag, bug, big
b.g A segunda letra é um caracter qualquer. Combina qualquer b&g
[a-zA-Z] Combina qualquer letra (mas não números ou simbolos)
[^0-9a-zA-Z] Combina qualquer caracter (mas não números ou letras)
[A-Z][A-Z]* Combina uma ou mais letras maiúsculas
[0-9]{3}-[0-9]{2}-[0-9]{4} Número do seguro social americano, e.g. 123-45-6789
PNG;Chart Busca por tópicos contendo as palavras PNG e Chart. Isso não é uma expressão regular! mas é uma facilidade útil que é habilitada quando a busca com expressão regular é habilitada.

Buscas com combinação de "and"

Avançado

Aqui algumas coisas para os nossos aficcionados em UNIX: (copiado de 'man egrep')

Uma expressão regular é uma fórmula que descreve uma seqüência de strings. Expressões regulares são construídas analogamente às expressões aritméticas, usando vários operadores para combinar expressões menores.

Os blocos de construção fundamentais são as expressões regulares que se combinam a um único caracter. A maioria dos caracteres, incluindo todas as letras e dígitos, são expressões regulares que combinam-se a si mesmos. Qualquer metacaracter com um significado especial pode ser mencionado precedendo-o com uma barra invertida (backslash).

Uma expressão entre colchetes é uma lista de caracteres colocadas entre [ e ]. Ela se combina a qualquer caracter daquela lista; se o primeiro caracter da lista for o circunflexo ^ então ele se combina a qualquer caracter que não esteja na lista. Por exemplo, a expressão regular [0123456789] se combina a qualquer dígito isolado.

Dentro de uma expressão entre colchetes, um intervalo consiste em dois caracteres separados por um hífen. Ela se combina a qualquer caracter que se localize entre os dois caracteres, inclusive usando o locale's collating sequence and character set. Por exemplo, na localidade padrão C, [a-d] é equivalente a [abcd]. Muitas localidades classificam os caracteres na ordem do dicionário, e nessas localidades [a-d] é tipicamente não equivalente a [abcd]; ela pode ser equivalente a [aBbCcDd], por exemplo.

Finalmente, algumas classes nomeadas de caracteres são pré-definidas dentro de bracket expressions, como a seguir. Seus nomes são auto-explicativos, e eles são [:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], [:space:], [:upper:], e [:xdigit:]. Por exemplo, [[:alnum:]] significa [0-9A-Za-z], except the latter form depends upon the C locale and the ASCII character encoding, whereas the former is independent of locale and character set. (Note que os colchetes nessas classes de nomes são parte de nomes simbólicos, e devem ser incluídos além dos colchetes que delimitam a bracket list.) A maioria dos metacaracteres perdem seu significado especial dentro das listas. Para incluir um ] literal coloque-o como o primeiro da lista. Similarmente, para incluir um ^ literal o coloque em qualquer lugar, menos como primeiro. Finalmente, para incluir um - literal coloque-o por último.

O ponto . se combina a qualquer caracter isolado. O símbolo \w é um sinônimo para [[:alnum:]] e \W é um sinônimo para [^[:alnum]].

O circunflexo ^ e o símbolo dollar $ são metacaracteres que respectivamente se combinam à uma string vazia no início e no fim de uma linha. Os símbolos \< e \> se combinam respectivamente à uma string vazia no início e no fim de uma palavra. O símbolo \b se combina à string vazia no limite de uma palavra, e \B se combina a string vazia fornecida e que não esteja no limite de uma palavra.

Uma expressão regular pode ser seguida por um dentre vários operadores de repetição:

? O item precedente é opcional se combina no máximo uma vez.
* O item precedente será combinado zero ou mais vezes.
+ O item precedente será combinado uma ou mais vezes.
{n} O item precedente se combina exatamente n vezes.
{n,} O item precedente se combina n ou mais vezes.
{n,m} O item precedente se combina no mínimo n vezes, mas não mais do que m vezes.

Duas expressões regulares podem ser concatenadas; a expressão regular resultante se combina a qualquer string formada pela concatenação de duas substrings que respectivamente se combinam às subexpressões concatenadas.

Duas expressões regulares podem ser unidas pelo operador infixo |; a expressão regular resultante se combina a qualquer string que coincida com qualquer das subexpressões.

Repetição exerce precedência sobre concatenação, que, por sua vez, exerce precedência sobre alternação. Uma subexpressão inteira pode ser colocada entre parênteses para que não siga essas regras de precedência.

A retro-referência \#, onde # é um digito sozinho, casa a substring previamente casada pela #ézima sub-expressão entre parenteses da expressão regular.


Nota do tradutor

O leitor da lingua portuguesa pode encontrar um ótimo material sobre expressões regulares no sítio de internet do Aurélio Marinho Jargas.

-- AurelioAHeckert? - 16 Apr 2004

TraducaoForm
Categoria Traducao
EstadoDaTraducao ParcialmenteTraduzido
FonteOriginal

Tópico RegularExpression    --    Editar Anexar Ver diffs Mais...

XHTML 1.0 válido! CSS válido! Sou tableless!