Alternação Regex – 02

Resumo : neste tutorial, você aprenderá sobre a alternância de regex, que é simplesmente um operador “OR” na expressão regular.

Introdução à alternância regex

Expressões regulares usam a barra vertical ( |) para denotar uma alternância. A alternância é simples no ORoperador nas expressões regulares.

Por exemplo, o padrão a seguir usa a alternância ( |) para corresponder applea ou orange:

'/apple|orange/'Linguagem de código:  PHP  ( php )

Aqui está o código:

<?php

$str = "apple, orange, banana";
$pattern = '/apple|orange/';

if (preg_match_all($pattern, $str, $matches)) {
    print_r($matches[0]);
}Linguagem de código:  PHP  ( php )

Saída:

Array
(
    [0] => apple
    [1] => orange
)Linguagem de código:  PHP  ( php )

Use a alternância regex para combinar a hora no formato hh:mm

Para corresponder a um horário em hh:mm, você pode usar a seguinte expressão regular:

'/\d{2}:\d{2}/'Linguagem de código:  PHP  ( php )

No entanto, o \d{2}padrão também corresponde a 99, que não é uma hora ou minuto válido.

Para corrigir isso, você pode usar a alternância regex. A hora válida varia de 01a 23. Portanto, o padrão para combinar a hora é o seguinte:

[01]\d|2[0-3]Linguagem de código:  PHP  ( php )

O minuto varia de 00a 59. Portanto, o padrão do minuto é:

[0-5]\dLinguagem de código:  PHP  ( php )

Aqui está a expressão regular que corresponde à hora no hh:mmformato:

'/[01]\d|2[0-3]:[0-5]\d/'Linguagem de código:  PHP  ( php )

Além disso, você pode adicionar grupos de captura para horas e minutos:

'/([01]\d|2[0-3]):([0-5]\d)/'Linguagem de código:  PHP  ( php )

O exemplo a seguir ilustra como usar a alternância regex para corresponder à hora:

<?php

$times = ['10:20', '24:10', '01:20', '22:99'];
$pattern = '/([01]\d|2[0-3]):([0-5]\d)/';

foreach ($times as $time) {
    if (preg_match($pattern, $time, $matches)) {
        echo $matches[0] . PHP_EOL;
    }
}Linguagem de código:  PHP  ( php )

Saída:

10:20
01:20Linguagem de código:  PHP  ( php )

Resumo

  • A alternância regex é um operador OR em expressões regulares.

Deixe um comentário

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