Quantificadores Regex

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  mquando.

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 behaviorebehaviour

Corresponder exatamente n vezes: {n}

O {n}quantificador corresponde exatamente ao seu elemento anterior nno 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:mmformato:

<?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 numa 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-yyyyou :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 nvezes, mas não mais do que mvezes, onde ne msã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-yyyyou 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 anterior n.
  • Use o quantificador {n, }para corresponder ao seu elemento anterior pelo menos nvezes.
  • Use o quantificador {n, m}para corresponder ao seu elemento anterior de na mvezes.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *