Инвертирование наборов символов в регулярках
С помощью шляпки ^ в начале квадратных
скобок можно инвертировать желаемое. То есть,
если, к примеру, команда [ab] ищет
букву 'a' или 'b', то команда
[^ab] будет искать все символы, кроме
'a' и 'b'.
Пример
В данном примере шаблон поиска выглядит так:
буква 'x', затем НЕ буква 'a',
не 'b' и не 'c', потом буква
'z':
<?php
$str = 'xaz xbz xcz xez';
$res = preg_replace('#x[^abc]z#', '!', $str);
?>
В результате в переменную запишется следующее:
'xaz xbz xcz !'
Пример
В данном примере шаблон поиска выглядит так:
буква 'x', затем НЕ маленькая латинская
буква, потом буква 'z':
<?php
$str = 'xaz xbz x1z xCz';
$res = preg_replace('#x[^a-z]z#', '!', $str);
?>
В результате в переменную запишется следующее:
'xaz xbz ! !'
Практические задачи
Напишите регулярку, которая найдет строки
по шаблону: цифра '1', затем символ
не 'e' и не 'x', цифра '2'.
Напишите регулярку, которая найдет строки
по шаблону: буква 'x', затем НЕ
цифра от 2 до 7, буква 'z'.
Напишите регулярку, которая найдет строки
по шаблону: буква 'x', затем НЕ
большая латинская буква от 1 и более
раз, буква 'z'.
Напишите регулярку, которая найдет строки
по шаблону: буква 'x', затем не
большая и не маленькая латинская буква и не цифра
от 1 до 5 от 1 и более
раз, буква 'z'.