Resumo : neste tutorial, você aprenderá sobre as classes de caracteres regex e como criar expressões regulares com padrões que correspondam a um conjunto de caracteres.
Uma classe de caracteres é um conjunto de caracteres, por exemplo, alfabetos, números, espaços em branco.
Uma classe de caracteres permite criar uma expressão regular com um padrão que corresponde a uma string com um ou mais caracteres em um conjunto.
Observe que uma classe de caracteres também é conhecida como conjunto de caracteres.
A classe de caracteres de dígito
O \d
representa a classe de caracteres de dígito que corresponde a qualquer dígito de 0 a 9. O exemplo a seguir usa a classe de caracteres de dígito que corresponde a qualquer dígito em um número de telefone:
<?php
$pattern = '/\d/';
$phone = '(650)-543-2100';
if (preg_match_all($pattern, $phone, $matches)) {
print_r($matches[0]);
}
Linguagem de código: PHP ( php )
Saída:
Array
(
[0] => 6
[1] => 5
[2] => 0
[3] => 5
[4] => 4
[5] => 3
[6] => 2
[7] => 1
[8] => 0
[9] => 0
)
Linguagem de código: PHP ( php )
Neste exemplo, a preg_match_all()
função retorna 10 dígitos.
A palavra classe de personagem
O \w
representa a classe de caracteres da palavra. Corresponde a um único caractere ASCII, incluindo alfabetos latinos, dígitos e sublinhado ( _
).
O exemplo a seguir usa a palavra classe de caracteres para corresponder a todos os caracteres, incluindo alfabetos latinos e dígitos:
<?php
$pattern = '/\w/';
$str = 'PHP 8.0';
if (preg_match_all($pattern, $str, $matches)) {
print_r($matches[0]);
}
Linguagem de código: PHP ( php )
Saída:
Array
(
[0] => P
[1] => H
[2] => P
[3] => 8
[4] => 0
)
Linguagem de código: PHP ( php )
Observe que a expressão regular /\w/
não corresponde aos espaços e ao ponto ( .
).
A classe de caracteres de espaço em branco
As \s
correspondências de espaços em branco, como um espaço, uma tabulação, uma nova linha, um retorno de carro, uma tabulação vertical e um byte NUL:
- ” ” (ASCII 32 (0x20)), um espaço comum.
- “\t” (ASCII 9 (0x09)), uma guia.
- “\n” (ASCII 10 (0x0A)), uma nova linha (alimentação de linha).
- “\r” (ASCII 13 (0x0D)), um retorno de carro.
- “\v” (ASCII 11 (0x0B)), uma guia vertical.
- “\0” (ASCII 0 (0x00)), o byte NUL.
O exemplo a seguir usa a classe de caracteres de espaço em branco para corresponder a todos os espaços em uma string:
<?php
$pattern = '/\s/';
$str = 'PHP version 8.0';
echo preg_match_all($pattern, $str, $matches);
Linguagem de código: PHP ( php )
Ele retorna dois conforme o esperado.
Classes de caracteres inversos
Uma classe de caracteres possui um conjunto inverso com a mesma letra, mas em maiúsculas:
\D
é a classe de caracteres inversa da\d
classe de caracteres, que corresponde a qualquer caractere, exceto um dígito.\S
é a classe de caracteres inversa do\s
conjunto de caracteres, que corresponde a qualquer caractere, exceto espaço em branco.\W
é a classe de caracteres inversa de\w
, que corresponde a qualquer caractere, exceto um caractere de palavra.
O exemplo a seguir usa a \D
classe de caracteres para corresponder a quaisquer caracteres, exceto dígitos:
<?php
$pattern = '/\D/';
$phone = '(650)-543-2100';
if (preg_match_all($pattern, $phone, $matches)) {
print_r($matches[0]);
}
Linguagem de código: PHP ( php )
Saída:
Array
(
[0] => (
[1] => )
[2] => -
[3] => -
)
Linguagem de código: PHP ( php )
A classe de caracteres ponto (.)
O ponto ( .
) é uma classe de caracteres especial que corresponde a qualquer caractere, exceto uma nova linha.
O exemplo a seguir usa a .
classe de caracteres ponto ( ) para corresponder a qualquer caractere, exceto a nova linha.
<?php
$pattern = '/./';
$str = "PHP\n";
if (preg_match_all($pattern, $str, $matches)) {
print_r($matches[0]);
}
Linguagem de código: PHP ( php )
Saída:
Array
(
[0] => P
[1] => H
[2] => P
)
Linguagem de código: PHP ( php )
Resumo
- Use
\d
a classe de caracteres para corresponder a qualquer dígito. - Use
\w
a classe de caracteres para corresponder a qualquer caractere de palavra. - Use
\s
a classe de caracteres para corresponder a qualquer espaço em branco. - A classe de caracteres
\D
,\W
,\S
são os conjuntos inversos de\d
,\w
e\s
classe de caracteres. - Use a classe de caractere ponto (
.
) para corresponder a qualquer caractere, exceto uma nova linha.