Quantificadores

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

Você usa quantificadores para especificar repetições de caracteres ou sequências nos padrões, como se segue:

Metacaractere de quantificador

Descrição

* (estrela)

Corresponde ao item anterior repetido nenhuma ou várias vezes.

+ (adição)

Corresponde ao item anterior repetido uma ou várias vezes.

? (ponto de interrogação)

Corresponde ao item anterior repetido nenhuma ou uma vezes.

{ n }

{ n ,}

e

{ n , n }

Especifica um quantificador numérico ou intervalo de quantificador para o item anterior:

/A{27}/ corresponde ao caractere A repetido 27 vezes.

/A{3,}/ corresponde ao caractere A repetido 3 ou mais vezes.

/A{3,5}/ corresponde ao caractere A repetido de 3 a 5 vezes.

Você pode aplicar um quantificador a um único caractere, a uma classe de caracteres ou a um grupo:

  • /a+/ corresponde ao caractere a repetido uma ou mais vezes.

  • /\d+/ corresponde a um ou mais dígitos.

  • /[abc]+/ corresponde a uma repetição de um ou mais caracteres, cada um é a , b ou c .

  • /(very, )*/ corresponde à palavra very seguida por uma vírgula e um espaço repetido nenhuma ou várias vezes.

Você pode usar quantificadores em grupos entre parênteses que têm quantificadores aplicados a eles. Por exemplo, o quantificador a seguir corresponde a strings como word e word-word-word :

/\w+(-\w+)*/

Por padrão, as expressões regulares executam o que é conhecido como correspondência greedy. Qualquer subpadrão na expressão regular (como .* ) tenta corresponder o máximo possível de caracteres na string antes de avançar para a próxima parte da expressão regular. Por exemplo, considere a seguinte expressão regular e string:

var pattern:RegExp = /<p>.*<\/p>/; 
str:String = "<p>Paragraph 1</p> <p>Paragraph 2</p>";

A expressão regular corresponde à string inteira:

<p>Paragraph 1</p> <p>Paragraph 2</p>

Considere, entretanto, que você deseja corresponder apenas um grupo <p>...</p> . É possível fazer isso da seguinte forma:

<p>Paragraph 1</p>

Adicione um ponto de interrogação ( ? ) depois de qualquer quantificador para alterá-lo para o que conhecido como quantificador lazy . Por exemplo, a seguinte expressão regular, que usa o quantificador lazy *? , corresponde a <p> seguido pelo número mínimo de caracteres possíveis (lazy) e por </p> :

/<p>.*?<\/p>/

Lembre os seguintes pontos sobre quantificadores:

  • Os quantificadores {0} e {0,0} não excluem um item de uma correspondência.

  • Não combine vários quantificadores, como em /abc+*/ .

  • O dot (.) não estende linhas a menos que o sinalizador s ( dotall ) esteja definido, mesmo se for seguido por um quantificador * . Por exemplo, considere o seguinte código:

    var str:String = "<p>Test\n"; 
    str += "Multiline</p>"; 
    var re:RegExp = /<p>.*<\/p>/; 
    trace(str.match(re)); // null; 
     
    re = /<p>.*<\/p>/s; 
    trace(str.match(re)); 
        // output: <p>Test 
        //                    Multiline</p>

Para obter mais informações, consulte Sinalizadores e propriedades .