Conjuntos de caracteres em expressões regulares PHP

Os grupos de caracteres \d e \w não são muito flexíveis. Mesmo uma tarefa simples, como encontrar todas as letras, mas não os dígitos - não pode ser resolvida por eles. Para tais tarefas, devem ser usados colchetes, que representam a operação OU.

Os colchetes substituem um caractere, qualquer um dos listados dentro. Por exemplo, assim: #x[abc]x# - estamos dizendo que nas extremidades devem haver letras 'x', e no meio - um caractere: ou 'a', ou 'b', ou 'c'.

Após os colchetes, você pode escrever operadores de repetição. Por exemplo, assim: #x[abc]+x# - estamos dizendo que dentro dos 'x' pode haver qualquer quantidade dos caracteres 'a', 'b' e 'c' - em qualquer combinação.

Você pode não apenas listar caracteres, mas criar intervalos de caracteres, escrevendo um hífen entre dois caracteres. Por exemplo, assim: #[a-d]# - obtemos todos os caracteres de 'a' até 'd'.

Vamos ver alguns exemplos.

Exemplo

Neste exemplo, o padrão de busca é assim: entre os 'x', qualquer letra de 'a' a 'z':

php<?php
  $str = 'xax xbx xcx x@x';
  $res = preg_replace('#x[a-z]x#', '!', $str);
?>

Como resultado, será armazenado na variável o seguinte:

php'! ! ! x@x'

Exemplo

Neste exemplo, o padrão de busca é assim: entre os 'x', qualquer letra de 'a' a 'k':

php<?php
  $str = 'xax xbx xmx x@x';
  $res = preg_replace('#x[a-k]x#', '!', $str);
?>

Como resultado, será armazenado na variável o seguinte:

php'! ! xmx x@x'

Exemplo

Neste exemplo, o padrão de busca é assim: entre os 'x', qualquer letra de 'A' a 'Z':

php<?php
  $str = 'xax xBx xcx x@x';
  $res = preg_replace('#x[A-Z]x#', '!', $str);
?>

Como resultado, será armazenado na variável o seguinte:

php'xax ! xcx x@x'

Exemplo

Neste exemplo, o padrão de busca é assim: entre os 'x', qualquer dígito de 0 a 9:

php<?php
  $str = 'xax x1x x3x x5x x@x';
  $res = preg_replace('#x[0-9]x#', '!', $str);
?>

Como resultado, será armazenado na variável o seguinte:

php'xax ! ! ! x@x'

Exemplo

Neste exemplo, o padrão de busca é assim: entre os 'x', qualquer dígito de 3 a 7:

php<?php
  $str = 'xax x1x x3x x5x x@x';
  $res = preg_replace('#x[3-7]x#', '!', $str);
?>

Como resultado, será armazenado na variável o seguinte:

php'xax x1x ! ! x@x'

Exemplo

Neste exemplo, o padrão de busca é assim: entre os 'x', qualquer letra de 'a' a 'z' ou dígito de 1 a 9:

php<?php
  $str = 'xax x1x x3x x5x x@x';
  $res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>

Como resultado, será armazenado na variável o seguinte:

php'! ! ! ! x@x'

Exemplo

Neste exemplo, o padrão de busca é assim: entre os 'x', qualquer letra de 'a' a 'z' ou letra de 'A' a 'Z':

php<?php
  $str = 'xax xBx xcx x5x x@x';
  $res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>

Como resultado, será armazenado na variável o seguinte:

php'! ! ! x5x x@x'

Exemplo

Neste exemplo, o padrão de busca é assim: entre os 'x', qualquer letra de 'a' a 'z' ou os dígitos 1, 2:

php<?php
  $str = 'xax xbx x1x x2x x3x';
  $res = preg_replace('#x[a-z12]x#', '!', $str);
?>

Como resultado, será armazenado na variável o seguinte:

php'! ! ! ! x3x'

Exemplo

Neste exemplo, o padrão de busca é assim: entre os 'x', letras de 'a' a 'z' em quantidade de 1 ou mais:

php<?php
  $str = 'xx xabesx xaadx x123x xa3x';
  $res = preg_replace('#x[a-z]+x#', '!', $str);
?>

Como resultado, será armazenado na variável o seguinte:

php'xx ! ! ! x123x xa3x'

Exemplo

Vamos fazer com que a quantidade de letras possa ser zero:

php<?php
  $str = 'xx xabesx xaadx x123x xa3x';
  $res = preg_replace('#x[a-z]*x#', '!', $str);
?>

Como resultado, será armazenado na variável o seguinte:

php'! ! ! x123x xa3x'

Tarefas práticas

Задание 1

Dada a string:

php<?php
  $str = 'aba aea aca aza axa';
?>

Escreva uma expressão regular que encontre pelo seguinte padrão: nas extremidades estão as letras 'a', e entre elas - a letra 'b', 'e' ou 'x'.

Задание 2

Dada a string:

php<?php
  $str = 'a1a a3a a7a a9a aba';
?>

Escreva uma expressão regular que encontre pelo seguinte padrão: nas extremidades estão as letras 'a', e entre elas - um dígito de 3 a 6.

Задание 3

Dada a string:

php<?php
  $str = 'aba aea afa aha aga';
?>

Escreva uma expressão regular que encontre pelo seguinte padrão: nas extremidades estão as letras 'a', e entre elas - uma letra de a a g.

Задание 4

Dada a string:

php<?php
  $str = 'aba aea afa aha aga';
?>

Escreva uma expressão regular que encontre pelo seguinte padrão: nas extremidades estão as letras 'a', e entre elas - uma letra de a a f e de j a z.

Задание 5

Dada a string:

php<?php
  $str = 'aAa aea aEa aJa a3a';
?>

Escreva uma expressão regular que encontre pelo seguinte padrão: nas extremidades estão as letras 'a', e entre elas - uma letra de a a f e de A a D.

Задание 6

Dada a string:

php<?php
  $str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>

Escreva uma expressão regular que encontre pelo seguinte padrão: nas extremidades estão as letras 'a', e entre elas - letras latinas minúsculas, sem afetar as demais.

Задание 7

Dada a string:

php<?php
  $str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>

Escreva uma expressão regular que encontre pelo seguinte padrão: nas extremidades estão as letras 'a', e entre elas - letras latinas minúsculas e maiúsculas, sem afetar as demais.

Задание 8

Dada a string:

php<?php
  $str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>

Escreva uma expressão regular que encontre pelo seguinte padrão: nas extremidades estão as letras 'a', e entre elas - letras latinas minúsculas e dígitos, sem afetar as demais.