Resumo : neste tutorial, você aprenderá como usar quantificadores em expressões regulares para corresponder a um número de instâncias de um caractere ou classe de caractere.
Introdução aos quantificadores regex
Os quantificadores permitem combinar seus elementos anteriores várias vezes. A tabela a seguir mostra a lista de quantificadores:
Quantificador | Significado |
---|---|
* |
Combine zero ou mais vezes. |
+ |
Combine uma ou mais vezes. |
? |
Combine zero ou uma vez. |
{ n } |
Combine exatamente n os horários. |
{ n ,} |
Combine pelo menos n vezes. |
{ n- , m } |
Combine de vez n em m quando. |
Combine zero ou mais vezes ( *
)
O *
quantificador corresponde ao seu elemento anterior zero ou mais vezes.
O exemplo a seguir usa o *
quantificador para corresponder ao texto que termina com PHP
:
<?php
$pattern = '/\w*PHP/';
$title = 'CakePHP & FuelPHP are PHP Frameworks';
if (preg_match_all($pattern, $title, $matches)) {
print_r($matches[0]);
}
Linguagem de código: PHP ( php )
Saída:
Array
(
[0] => CakePHP
[1] => FuelPHP
[2] => PHP
)
Linguagem de código: PHP ( php )
Combine uma ou mais vezes ( +
)
O +
quantificador corresponde ao seu elemento anterior uma ou mais vezes. Por exemplo, \d+
corresponde a um ou mais dígitos.
O exemplo a seguir usa o +
quantificador para corresponder a um ou mais dígitos em uma string:
<?php
$pattern = '/\d+/';
$title = 'PHP 1.0 was released in 1995';
if (preg_match_all($pattern, $title, $matches)) {
print_r($matches[0]);
}
Linguagem de código: PHP ( php )
Saída:
Array
(
[0] => 1
[1] => 0
[2] => 1995
)
Linguagem de código: PHP ( php )
Corresponder zero ou uma vez ( ?
)
O ?
quantificador corresponde ao seu elemento anterior zero ou uma vez. Por exemplo:
<?php
$pattern = '/behaviou?r/';
$title = 'Which is correct behavior or behaviour?';
if (preg_match_all($pattern, $title, $matches)) {
print_r($matches[0]);
}
Linguagem de código: PHP ( php )
Saída:
Array
(
[0] => behavior
[1] => behaviour
)
Linguagem de código: PHP ( php )
Neste exemplo, u?
corresponde a zero ou um caractere u
. Portanto, as partidas incluem ambos behavior
ebehaviour
Corresponder exatamente n vezes: {n}
O {n}
quantificador corresponde exatamente ao seu elemento anterior n
no tempo, onde n
é zero ou um número inteiro positivo.
O exemplo a seguir usa o quantificador {n}
para corresponder uma sequência de tempo ao hh:mm
formato:
<?php
$pattern = '/\d{2}:\d{2}/';
$title = "It was 12:15 AM";
if (preg_match_all($pattern, $title, $matches)) {
print_r($matches[0]);
}
Linguagem de código: PHP ( php )
Saída:
Array
(
[0] => 12:15
)
Linguagem de código: PHP ( php )
Neste exemplo, \d{2}
corresponde exatamente a dois dígitos. Portanto, \d{2}:\d{2}
corresponde a dois dígitos, dois pontos :
e, em seguida, dois dígitos.
Combine pelo menos n vezes: {n,}
O quantificador {n,} corresponde ao seu elemento anterior pelo menos n
uma vez, onde n
é zero ou um número inteiro positivo.
O exemplo a seguir usa o {n, }
quantificador para corresponder as strings de data com o formato m-d-yyyy
ou :mm-dd-yyyy
<?php
$pattern = '/\d{1,}-\d{1,}-\d{4}/';
$title = "1-1-2020 or 01-01-2020 or 1/1/2020";
if (preg_match_all($pattern, $title, $matches)) {
print_r($matches[0]);
}
Linguagem de código: PHP ( php )
Saída:
Array
(
[0] => 1-1-2020
[1] => 01-01-2020
)
Linguagem de código: PHP ( php )
Correspondência entre n e m vezes: {n,m}
O {n,m}
quantificador corresponde ao seu elemento anterior pelo menos n
vezes, mas não mais do que m
vezes, onde n
e m
são zero ou um número inteiro positivo.
Por exemplo, a expressão regular '/\d{1,}-\d{1,}-\d{1,}/'
também corresponde a 1000-1000-2020
. Para torná-lo mais preciso, você pode usar o {n, m}
seguinte:
<?php
$pattern = '/\d{1,2}-\d{1,2}-\d{4}/';
$title = "1-1-2020 or 01-01-2020 or 1/1/2020";
if (preg_match_all($pattern, $title, $matches)) {
print_r($matches[0]);
}
Linguagem de código: PHP ( php )
Neste exemplo, \d{1,2}
corresponde a um ou dois dígitos. Portanto, as \d{1,2}-\d{1,2}-\d{4}
correspondências d-m-yyyy
ou dd-mm-yyyy
.
Resumo
- Use o quantificador
*
para corresponder ao elemento anterior zero ou mais vezes. - Use o quantificador
+
para corresponder ao elemento anterior uma ou mais vezes. - Use o quantificador
?
para corresponder ao elemento anterior zero ou mais vezes. - Use o quantificador
{n}
para corresponder exatamente ao seu elemento anteriorn
. - Use o quantificador
{n, }
para corresponder ao seu elemento anterior pelo menosn
vezes. - Use o quantificador
{n, m}
para corresponder ao seu elemento anterior den
am
vezes.