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
.