O que é Regex – Expressão Regular

Neste artigo, daremos uma olhada detalhada no PHP regex com exemplos, como ele funciona e seus aplicativos.

Na computação, uma expressão regular, geralmente abreviada como “ regex “, é uma sequência de caracteres usada para definir um padrão de pesquisa.

É uma linguagem usada para combinar padrões em dados de texto para identificar padrões específicos.

Regex é um tipo de expressão comumente usado para manipular dados de texto, seja em linguagens de programação, editores de texto ou outros aplicativos.

Há vários métodos poderosos disponíveis para manipular dados de texto, como pesquisar padrões ou substrings específicos, substituir texto e executar outras operações nos dados.



O que é regex em PHP?

PHP regex ou expressão regular, é uma sequência de caracteres que especifica um padrão de pesquisa.

O mecanismo PHP regex fornece um conjunto de funções que permitem aos desenvolvedores procurar padrões em strings, substituir partes de strings e extrair informações de strings.

Por exemplo , o uso de expressões regulares pode ser usado de várias maneiras diferentes, como pesquisar todas as ocorrências de uma palavra específica em um documento de texto e extrair todos os endereços de e-mail de uma lista de dados de texto.

Existem várias maneiras de usar expressões regulares, mas primeiro você precisa entender a sintaxe e a estrutura do PHP para usá-las.

Você pode usar expressões regulares para manipular e processar facilmente grandes quantidades de texto, o que é valioso para quem trabalha com dados de texto.

Sintaxe

A expressão regular em PHP contém delimitadores, padrões e modificadores opcionais.

$exp = "/mrexamples/i";

O exemplo acima usa / como delimitador, mrexamples como o padrão a ser pesquisado e i como o modificador que não diferencia maiúsculas de minúsculas.

Há vários caracteres que podem ser usados ​​como delimitadores, mas nenhuma letra , número , barra invertida ou espaço pode ser usado.

Normalmente, o delimitador superior é a barra ( / ), mas quando seu padrão contém barras, pode ser mais adequado usar outro delimitador à esquerda, como # ou ~ .


Funções PHP Regex

Existem várias funções PHP que permitem usar expressões regulares, incluindo:

Funções Regex Visão geral
preg_match() pesquisa uma string em busca de um padrão e retorna a primeira correspondência.
preg_match_all() pesquisa uma string para todas as correspondências de um padrão e retorna uma matriz.
preg_replace() substitui um padrão em uma string por uma substituição especificada.
preg_split() divide uma string em uma matriz com base em um padrão especificado.
Essas funções fornecem um poderoso conjunto de ferramentas para trabalhar com expressões regulares em PHP.

PHP Regex preg_match ()

Preg_match() é uma função embutida no PHP que é usada para fazer correspondência de expressão regular comparando o conteúdo de uma expressão regular com a string. Uma expressão é avaliada pesquisando uma string por um padrão que corresponda a um regex e retornando a primeira correspondência encontrada na string.

Existem três parâmetros que são passados ​​para a função preg_match() :

  • Em primeiro lugar, precisamos especificar a expressão regular que deve ser correspondida.
  • Em segundo lugar, precisamos fornecer uma string a ser pesquisada como segundo parâmetro.
  • Em terceiro lugar, existe uma variável opcional que será preenchida com as correspondências encontradas na segunda etapa deste algoritmo.

Quando uma correspondência é encontrada, preg_match() retorna 1, e esta informação é armazenada no terceiro parâmetro se uma correspondência for encontrada.

Quando preg_match() não encontra nenhuma correspondência, ele retorna 0 como resultado.

Abaixo está um exemplo de uso de uma expressão regular para procurar por “ mrexamples ” em uma string sem diferenciar maiúsculas de minúsculas :

Example: 

1
2
3
4
5
6
7
8
9
10
11
<?php
$string = "Visit mrexamples for learning programming languages";
$pattern = "/mrexamples/i";
echo preg_match($pattern, $string); // Outputs 1
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Este é outro exemplo de uso da função preg_match() para procurar por “PHP” em uma string sem diferenciar maiúsculas de minúsculas:

Example: 

1
2
3
4
5
6
7
8
9
10
11
<?php
$string = "PHP is fun";
$pattern = "/PHP/i";
echo preg_match($pattern, $string); // Outputs 1
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

PHP Regex preg_match_all ()

Esta função preg_match_all() é uma função PHP integrada que pode ser usada com o objetivo de corresponder uma expressão regular em toda uma gama de expressões em um documento.

De natureza semelhante a preg_match() , ele retorna uma lista de todas as correspondências encontradas em uma string, em vez de apenas retornar a primeira correspondência encontrada na string, como preg_match().

Existem três parâmetros que são passados ​​para a função preg_match_all():

  • Em primeiro lugar, precisamos especificar a expressão regular que deve ser correspondida.
  • Em segundo lugar, precisamos fornecer uma string a ser pesquisada como segundo parâmetro.
  • Em terceiro lugar, existe uma variável opcional que será preenchida com as correspondências encontradas na segunda etapa deste algoritmo.

A função preg_match_all() retorna uma contagem de correspondências se uma correspondência for encontrada e armazena esse número no parâmetro 3 se uma correspondência for encontrada. Um valor de 0 é retornado por preg_match_all() se nenhuma correspondência for encontrada.

Aqui está um exemplo de como uma expressão regular pode ser usada para fazer uma contagem sem distinção entre maiúsculas e minúsculas de quantas ocorrências da palavra “ ain ” existem em uma string usando uma expressão regular:

Example: 

1
2
3
4
5
6
7
8
9
10
11
<?php
$string = "Peter Piper Picked a Peck of Pickled Peppers.";
$pattern = "/pe/i";
echo preg_match_all($pattern, $string); // Outputs 5
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
O exemplo a seguir ajudará você a entender melhor a função preg_match_all() :

Example: 

1
2
3
4
5
6
7
8
9
10
11
<?php
$string = "The price of the product is €10.99"; // The string to search
$pattern = "/pr+/"; // A regular expression to match any sequence of digits
echo preg_match_all($pattern, $string); // Outputs 2
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

PHP Regex preg_replace()

Preg_replace() é uma função PHP integrada que pesquisa e substitui padrões regex em strings.
Existem três parâmetros que são passados ​​para a função preg_replace():
  • Como primeiro parâmetro, precisamos especificar o padrão de expressão regular que queremos corresponder.
  • Em segundo lugar, temos a string de substituição , que é o segundo parâmetro.
  • No terceiro parâmetro, você pode fornecer uma string que gostaria de pesquisar.
Se um padrão correspondente for encontrado, preg_replace() substituirá a string correspondente pela string de substituição e retornará a string modificada se uma correspondência for encontrada.
Preg_replace() retornará a string original no caso de uma correspondência não ser encontrada.
Exemplo de substituição de Microsoft por mrexamples usando uma expressão regular que não diferencia maiúsculas de minúsculas:

Example: 

1
2
3
4
5
6
7
8
9
10
11
<?php
$string = "Visit Microsoft!";
$pattern = "/microsoft/i";
echo preg_replace($pattern, "mrexamples", $string); // Outputs "Visit mrexamples!"
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Exemplos de PHP Regex

O exemplo a seguir ajudará você a entender melhor a função preg_replace() :

Example: 

1
2
3
4
5
6
7
8
9
10
11
<?php
$string = "The price of the product is €10.99"; // The string to search
$pattern = "/10.99/"; // A regular expression to match any sequence of digits
echo preg_replace($pattern, 12.99, $string); // Outputs 2
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Exemplo de Explicação

No exemplo acima, a função preg_replace() é usada para pesquisar a string 'O preço do produto é $10,99' para um padrão de expressão regular /10,99/ e substituí-la pelo valor 12,99.

O padrão de expressão regular /10.99/ corresponde à string '10.99' na string original, que representa um preço de US$ 10,99.

A função preg_replace() substitui essa string correspondente por 12,99, resultando na string modificada 'O preço do produto é $12,99'.

A string modificada é então gerada usando a instrução echo, resultando na saída: O preço do produto é $ 12,99.


PHP Regex preg_split ()

A função preg_split() executa uma correspondência de padrão de expressão regular em uma string e divide a string em uma matriz com base na correspondência de padrão.

Esta função recebe dois parâmetros:

  • O primeiro é o padrão de expressão regular a ser correspondido.
  • A segunda é a string de entrada a ser dividida. Ele retorna uma matriz de substrings da string de entrada que foram separadas pelo padrão correspondente.

Aqui está um exemplo de uso de preg_split() para dividir uma string com base em um padrão de expressão regular:

Example: 

1
2
3
4
5
6
7
8
9
10
<?php
$string = 'mrexample';
$result = preg_split('//', $string , -1, PREG_SPLIT_NO_EMPTY);
print_r ($result);
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Modificadores PHP Regex

As pesquisas podem ser modificadas adicionando modificadores a elas para alterar como elas se comportam.

modificador Visão geral
eu Fornece uma pesquisa que não diferencia maiúsculas de minúsculas.
m Usando a função de pesquisa multilinha, você pode descobrir se um padrão corresponde ao início ou ao fim de uma string. Isso significa que você fará a correspondência entre o início e o fim de cada linha.
você Garante que os padrões codificados em UTF-8 sejam correspondidos corretamente.

Padrões PHP Regex

Existem algumas maneiras diferentes de encontrar um intervalo de caracteres usando colchetes:

Padrões Visão geral
[abc] Entre os colchetes, escolha um caractere.
[^abc] Escolha qualquer caractere, mas não entre colchetes.
[0-9] Encontre um caractere entre 0 e 9.

PHP Regex metacaracteres

Metacaracteres são caracteres que possuem um significado especial associado a eles:

Metacaracteres Visão geral
| Os padrões são separados por | para que você possa encontrar uma correspondência exata para qualquer um deles, por exemplo: gato|cachorro|peixe
. Pesquise apenas uma instância
^ Você pode usar este método para encontrar uma correspondência no início de uma string, como: ^Hello
$ Esse método encontra uma correspondência no final da string, como no exemplo a seguir: World$
\d Este método encontra um dígito.
\s Os caracteres de espaço em branco são encontrados usando este método
\b Você pode procurar por uma correspondência olhando para o início da palavra assim: /bPALAVRA ou olhando para o final da palavra assim: PALAVRA\b
\uxxxx Usando este método, é possível encontrar o caractere Unicode associado ao número hexadecimal xxxx

PHP Regex Quantifiers

Para definir quantidades, usamos quantificadores:

Quantificadores Visão geral
n+ Strings contendo pelo menos um n são correspondidas.
n* Strings contendo zero ou mais ocorrências de n são correspondidas.
n? Strings contendo zero ou uma ocorrência de n são correspondidas.
n{x} Strings contendo uma sequência de X n's são correspondidas.
n{x,y} Strings contendo uma sequência de X a Y n's são correspondidas.
n{x,} Strings contendo uma sequência de pelo menos X n's são correspondidas.
Lembre-se : A barra invertida ( \ ) pode ser usada para escapar de um ou mais caracteres especiais se sua expressão precisar procurar por um deles.

Por exemplo, você pode usar a seguinte expressão para pesquisar um ou mais pontos de interrogação:

$pattern = ‘/?+/’;

Agrupamento PHP Regex

Quantificadores podem ser aplicados a padrões inteiros usando parênteses. Além disso, eles podem ser usados ​​para selecionar partes do padrão para usar como correspondência, em vez do padrão inteiro.

Por exemplo, você pode usar o agrupamento para encontrar a palavra “banana” procurando por “ba” seguido de “na” em dois momentos diferentes:

Example: 

1
2
3
4
5
6
7
8
9
10
11
<?php
$string = "Bananas and grapes.";
$pattern = "/ba(na){2}/i";
echo preg_match($pattern, $string); // Outputs 1
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

No exemplo abaixo, estamos agrupando “PHP” por seguido da ocorrência de “PHP” em $title :

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$pattern = '/\w*PHP/';
$title = 'CakePHP & FuelPHP are PHP Frameworks';
if (preg_match_all($pattern, $title, $matches)) {
print_r($matches[0]);
}
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Nós valorizamos o seu feedback.
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0

Assine a nossa newsletter
Digite seu e-mail para receber um resumo semanal de nossos melhores posts. Saber mais!
ícone