Expressões Regulares PHP
O que é uma Expressão Regular?
Uma expressão regular é uma sequência de caracteres que forma um padrão de pesquisa. Ao pesquisar dados em um texto, você pode usar esse padrão de pesquisa para descrever o que está procurando.
Uma expressão regular pode ser um único caractere ou um padrão mais complicado.
As expressões regulares podem ser usadas para realizar todos os tipos de pesquisa de texto e operações de substituição de texto.
Sintaxe
Em PHP, expressões regulares são strings compostas por delimitadores, um padrão e modificadores opcionais.
$exp = "/w3schools/i";
No exemplo acima, /
é o delimitador , w3schools é o padrão que está sendo pesquisado e i
é um modificador que faz a pesquisa não diferenciar maiúsculas de minúsculas.
O delimitador pode ser qualquer caractere que não seja uma letra, número, barra invertida ou espaço. O delimitador mais comum é a barra (/), mas quando seu padrão contém barras, é conveniente escolher outros delimitadores como # ou ~.
Funções de expressão regular
O PHP fornece uma variedade de funções que permitem o uso de expressões regulares. As
funções preg_match()
, preg_match_all()
e preg_replace()
são algumas das mais usadas:
Function | Description |
---|---|
preg_match() | Returns 1 if the pattern was found in the string and 0 if not |
preg_match_all() | Returns the number of times the pattern was found in the string, which may also be 0 |
preg_replace() | Returns a new string where matched patterns have been replaced with another string |
Usando preg_match()
A preg_match()
função informará se uma string contém correspondências de um padrão.
Exemplo
Use uma expressão regular para fazer uma pesquisa sem distinção entre maiúsculas e minúsculas por "w3schools" em uma string:
<?php
$str = "Visit W3Schools";
$pattern = "/w3schools/i";
echo
preg_match($pattern, $str); // Outputs 1
?>
Usando preg_match_all()
A preg_match_all()
função lhe dirá quantas correspondências foram encontradas para um padrão em uma string.
Exemplo
Use uma expressão regular para fazer uma contagem sem distinção entre maiúsculas e minúsculas do número de ocorrências de "ain" em uma string:
<?php
$str = "The rain in SPAIN falls mainly on the plains.";
$pattern = "/ain/i";
echo preg_match_all($pattern, $str); // Outputs 4
?>
Usando preg_replace()
A preg_replace()
função substituirá todas as correspondências do padrão em uma string por outra string.
Exemplo
Use uma expressão regular que não diferencia maiúsculas de minúsculas para substituir Microsoft por W3Schools em uma string:
<?php
$str = "Visit Microsoft!";
$pattern = "/microsoft/i";
echo
preg_replace($pattern, "W3Schools", $str); // Outputs "Visit
W3Schools!"
?>
Modificadores de Expressão Regular
Os modificadores podem alterar a forma como uma pesquisa é realizada.
Modifier | Description |
---|---|
i | Performs a case-insensitive search |
m | Performs a multiline search (patterns that search for the beginning or end of a string will match the beginning or end of each line) |
u | Enables correct matching of UTF-8 encoded patterns |
Padrões de Expressão Regular
Colchetes são usados para encontrar um intervalo de caracteres:
Expression | Description |
---|---|
[abc] | Find one character from the options between the brackets |
[^abc] | Find any character NOT between the brackets |
[0-9] | Find one character from the range 0 to 9 |
Metacaracteres
Metacaracteres são caracteres com um significado especial:
Metacharacter | Description |
---|---|
| | Find a match for any one of the patterns separated by | as in: cat|dog|fish |
. | Find just one instance of any character |
^ | Finds a match as the beginning of a string as in: ^Hello |
$ | Finds a match at the end of the string as in: World$ |
\d | Find a digit |
\s | Find a whitespace character |
\b | Find a match at the beginning of a word like this: \bWORD, or at the end of a word like this: WORD\b |
\uxxxx | Find the Unicode character specified by the hexadecimal number xxxx |
Quantificadores
Quantificadores definem quantidades:
Quantifier | Description |
---|---|
n+ | Matches any string that contains at least one n |
n* | Matches any string that contains zero or more occurrences of n |
n? | Matches any string that contains zero or one occurrences of n |
n{x} | Matches any string that contains a sequence of X n's |
n{x,y} | Matches any string that contains a sequence of X to Y n's |
n{x,} | Matches any string that contains a sequence of at least X n's |
Nota: Se sua expressão precisar procurar um dos caracteres especiais, você pode usar uma barra invertida ( \ ) para escapar deles. Por exemplo, para pesquisar um ou mais pontos de interrogação, você pode usar a seguinte expressão: $pattern = '/\?+/';
Agrupamento
Você pode usar parênteses ( )
para aplicar quantificadores a padrões inteiros. Eles também podem ser usados para selecionar partes do padrão a serem usadas como correspondência.
Exemplo
Use o agrupamento para pesquisar a palavra "banana" procurando por ba seguido por duas instâncias de na :
<?php
$str = "Apples and bananas.";
$pattern = "/ba(na){2}/i";
echo
preg_match($pattern, $str); // Outputs 1
?>
Referência RegExp completa
Para obter uma referência completa, acesse nossa Referência Completa de Expressões Regulares PHP .
A referência contém descrições e exemplos de todas as funções de Expressão Regular.