Resumo : neste tutorial, você aprenderá sobre os conjuntos e intervalos de regex para criar expressões regulares que correspondam a um conjunto de caracteres.
Conjuntos
Um conjunto é um ou mais caracteres especificados entre colchetes. Por exemplo:
[abc]
Linguagem de código: PHP ( php )
Como um conjunto corresponde a qualquer caractere entre colchetes, o [abc]
conjunto corresponde ao caractere a
e b
.c
O exemplo a seguir usa um conjunto para corresponder à string Jill
ou Hill
:
<?php
$pattern = '/[JH]ill/';
$title = 'Jack and Jill Went Up the Hill';
if (preg_match_all($pattern, $title, $matches)) {
print_r($matches[0]);
}
Linguagem de código: PHP ( php )
Saída:
Array
(
[0] => Jill
[1] => Hill
)
Linguagem de código: PHP ( php )
Neste exemplo, o conjunto [JH]
corresponde ao caractere J
ou H
. Portanto, a expressão regular /[JH]ill/
corresponde Jill
a e Hill
.
Gamas
Suponha que você queira combinar muitos caracteres em um conjunto, por exemplo, de a
para z
. Se você listar todos esses caracteres entre colchetes, não seria o ideal.
Os intervalos permitem especificar um intervalo de caracteres. Por exemplo, os [a-z]
intervalos de a
até z
.
Além disso, você pode especificar vários intervalos entre colchetes. Por exemplo, o [a-z0-9]
intervalo corresponde a caracteres de a
até z
e números de 0
até 9
.
Da mesma forma, the [a-zA-Z0-9_]
é igual à \w
classe de caractere e o [0-9]
intervalo é igual a \d
.
Negar conjuntos e intervalos
Para negar um conjunto ou intervalo, você usa o caractere circunflexo ( ^
) no início do conjunto e intervalo. Por exemplo, o intervalo [^0-9]
corresponde a qualquer caractere, exceto um dígito. É o mesmo que \D
.
Observe que o sinal de intercalação ( ^
) também é uma âncora que corresponde ao início de uma string. Se você usar o sinal de intercalação ( ^
) entre colchetes, ele se comportará como um operador de negação, não como uma âncora.
O exemplo a seguir usa o sinal de intercalação (^) para negar o conjunto [aeoiu] para corresponder às consoantes na string 'Hello'
:
<?php
$pattern = '/[^aeoiu]/';
$title = 'Hello';
if (preg_match_all($pattern, $title, $matches)) {
print_r($matches[0]);
}
Linguagem de código: HTML, XML ( xml )
Saída:
Array
(
[0] => H
[1] => l
[2] => l
)
Linguagem de código: PHP ( php )
Resumo
- Um conjunto corresponde a qualquer caractere especificado entre colchetes.
- Um intervalo corresponde a qualquer caractere em um intervalo de caracteres.
- Para negar um conjunto ou intervalo, você usa o caractere circunflexo
[^...]
.