Compartilhar via


Quantificadores em JScript

Se você não pode especificar o número de caracteres que compõem uma correspondência, expressões regulares suportam o conceito de quantificadores. Esses quantificadores permitem que você especifique quantas vezes um determinado componente de uma expressão regular deve ocorrer uma correspondência seja verdadeiro.

O que significam os quantificadores

Caracterer

Descrição

*

Coincide com o caractere anterior ou uma subexpressão zero ou mais vezes. Por exemplo, zo * corresponde a z e zoo. * é equivalente a {0}.

+

Coincide com o caractere anterior ou a subexpressão uma ou mais vezes. Por exemplo, zo + corresponde zo e zoo, mas não de z. + equivale a {1}.

?

Coincide com o caractere anterior ou a hora de subexpressão zero ou mais. Por exemplo, são compatíveis? corresponde a faz em fazer ou não. ? é equivalente à {0,1}

{n}

n é um inteiro não negativo. Corresponde exatamente ao n vezes. Por exemplo, o {2} não coincide com o Bob mas corresponde aos dois em alimentos.

{n,}

n é um inteiro não negativo. Coincide pelo menos n vezes. Por exemplo, o {2} não coincide com o de Bob e corresponde todo o em foooood. o {1}, é equivalente a o +. o {0}, é equivalente a o *.

{n,m}

m e n são inteiros não negativos, onde n < = m. Coincide pelo menos n e no máximo m vezes. Por exemplo, o {1,3} corresponde aos primeiros três em fooooood. o {0,1} é o equivalente?. Observe que você não pode colocar um espaço entre a vírgula e os números.

Desde que os números de capítulo poderiam facilmente exceder nove em um documento de entrada grande, você precisa de uma maneira de lidar com dois ou três números de capítulo de dígito. Quantificadores oferecem esse recurso. A seguinte expressão regular corresponde a títulos de capítulo com qualquer número de dígitos:

/Chapter [1-9][0-9]*/

Observe que o quantificador aparece depois da expressão de intervalo. Portanto, ele se aplica à expressão de todo o intervalo que, nesse caso, especifica somente dígitos de 0 a 9, inclusive.

O + quantificador não é usado aqui porque precisa necessariamente ser um dígito na posição de segunda ou subseqüente. O? também caractere não é usado porque ela limita os números de capítulo somente dois dígitos. Você deseja corresponder a pelo menos um dígito a seguir do capítulo e um caractere de espaço.

Se você souber que os números de capítulo estão limitados a apenas 99 capítulos, você pode usar a expressão a seguir para especificar os dígitos de pelo menos um, mas não mais de dois.

/Chapter [0-9]{1,2}/

A desvantagem da expressão acima é que um número de capítulo maior que 99 corresponderá ainda apenas os dois primeiros dígitos. Outra desvantagem é que corresponderiam capítulo 0. Expressões de melhor para correspondência apenas dois dígitos são os seguintes:

/Chapter [1-9][0-9]?/

ou

/Chapter [1-9][0-9]{0,1}/

O *, +, e? quantificadores são todas conhecidas como greedy porque eles correspondem tanto texto quanto possível. No entanto, às vezes você quisesse uma correspondência mínima.

Por exemplo, você pode estar pesquisando um documento HTML para uma ocorrência de um título de capítulo colocado em uma tag H1. Esse texto aparece no documento como:

<H1>Chapter 1: Introduction to Regular Expressions</H1>

A expressão a seguir corresponde a tudo, desde a abertura de menor que o símbolo (<) para o símbolo maior do que (>) que fecha a tag H1.

/<.*>/

Se você quiser apenas coincide com a marca de abertura H1, as seguir, não greedy correspondências de expressões apenas <H1>.

/<.*?>/

Colocando o? Após um *, +, ou? quantificador, a expressão é transformado em um greedy a uma correspondência não greedy ou mínima.

Consulte também

Outros recursos

Introdução a expressões regulares