Задачи для решения

На {}

Дана строка 'aa aba abba abbba abbbba abbbbba'. Напишите регулярку, которая найдет строки abba, abbba, abbbba и только их.

Решение:

<?php
	echo preg_replace('#ab{2,4}a#', '!', 'aa aba abba abbba abbbba abbbbba');
?>

Дана строка 'aa aba abba abbba abbbba abbbbba'. Напишите регулярку, которая найдет строки вида aba, в которых 'b' встречается менее 3-х раз (включительно).

Решение:

<?php
	echo preg_replace('#ab{0,3}a#', '!', 'aa aba abba abbba abbbba abbbbba');
?>

Дана строка 'aa aba abba abbba abbbba abbbbba'. Напишите регулярку, которая найдет строки вида aba, в которых 'b' встречается более 4-х раз (включительно).

Решение:

<?php
	echo preg_replace('#ab{4,}a#', '!', 'aa aba abba abbba abbbba abbbbba');
?>

На \s, \S, \w, \W, \d, \D

Дана строка 'a1a a2a a3a a4a a5a aba aca'. Напишите регулярку, которая найдет строки, в которых по краям стоят буквы 'a', а между ними одна цифра.

Решение:

<?php
	echo preg_replace('#a\da#', '!', 'a1a a2a a3a a4a a5a aba aca');
?>

Дана строка 'a1a a22a a333a a4444a a55555a aba aca'. Напишите регулярку, которая найдет строки, в которых по краям стоят буквы 'a', а между ними любое количество цифр.

Решение:

<?php
	echo preg_replace('#a\d+a#', '!', 'a1a a22a a333a a4444a a55555a aba aca');
?>

Дана строка 'aa a1a a22a a333a a4444a a55555a aba aca'. Напишите регулярку, которая найдет строки, в которых по краям стоят буквы 'a', а между ними любое количество цифр (в том числе и ноль цифр, то есть строка 'aa').

Решение:

<?php
	echo preg_replace('#a\d*a#', '!', 'aa a1a a22a a333a a4444a a55555a aba aca');
?>

Дана строка 'avb a1b a2b a3b a4b a5b abb acb'. Напишите регулярку, которая найдет строки следующего вида: по краям стоят буквы 'a' и 'b', а между ними - не число.

Решение:

<?php
	echo preg_replace('#a\Db#', '!', 'avb a1b a2b a3b a4b a5b abb acb');
?>

Дана строка 'ave a#b a2b a$b a4b a5b a-b acb'. Напишите регулярку, которая найдет строки следующего вида: по краям стоят буквы 'a' и 'b', а между ними - не буква и не цифра.

Решение:

<?php
	echo preg_replace('#a\Wb#', '!', 'ave a#b a2b a$b a4b a5b a-b acb');
?>

Дана строка 'ave a#a a2a a$a a4a a5a a-a aca'. Напишите регулярку, которая заменит все пробелы на '!'.

Решение:

<?php
	echo preg_replace('#\s#', '!' ,'ave a#a a2a a$a a4a a5a a-a aca');
?>

На [], '^' - не, [a-zA-Z], кириллицу

Дана строка 'aba aea aca aza axa'. Напишите регулярку, которая найдет строки aba, aea, axa, не затронув остальных.

Решение:

<?php
	echo preg_replace('#a[bex]a#', '!', 'aba aea aca aza axa');
?>

Дана строка 'aba aea aca aza axa a.a a+a a*a'. Напишите регулярку, которая найдет строки aba, a.a, a+a, a*a, не затронув остальных.

Решение:

<?php
	echo preg_replace('#a[b.+*]a#', '!', 'aba aea aca aza axa a.a a+a a*a');
?>

Напишите регулярку, которая найдет строки следующего вида: по краям стоят буквы 'a', а между ними - цифра от 3-х до 7-ми.

Решение:

<?php
	echo preg_replace('#a[3-7]a#', '!', $str);
?>

Напишите регулярку, которая найдет строки следующего вида: по краям стоят буквы 'a', а между ними - буква от a до g.

Решение:

<?php
	echo preg_replace('#a[a-g]a#', '!', $str);
?>

Напишите регулярку, которая найдет строки следующего вида: по краям стоят буквы 'a', а между ними - буква от a до f и от j до z.

Решение:

<?php
	echo preg_replace('#a[a-fj-z]a#', '!', $str);
?>

Напишите регулярку, которая найдет строки следующего вида: по краям стоят буквы 'a', а между ними - буква от a до f и от A до Z.

Решение:

<?php
	echo preg_replace('#a[a-fA-Z]a#', '!', $str);
?>

Дана строка 'aba aea aca aza axa a-a a#a'. Напишите регулярку, которая найдет строки следующего вида: по краям стоят буквы 'a', а между ними - не 'e' и не 'x'.

Решение:

<?php
	echo preg_replace('#a[^ex]a#', 'aba aea aca aza axa a-a a#a', $str);
?>

Дана строка 'wйw wяw wёw wqw'. Напишите регулярку, которая найдет строки следующего вида: по краям стоят буквы 'w', а между ними - буква кириллицы.

Решение:

<?php
	echo preg_replace('#w[а-яА-ЯЁё]w#u', '!', 'wйw wяw wёw wqw');
?>

На [a-zA-Z] и квантификаторы

Дана строка 'aAXa aeffa aGha aza ax23a a3sSa'. Напишите регулярку, которая найдет строки следующего вида: по краям стоят буквы 'a', а между ними - маленькие латинские буквы, не затронув остальных.

Решение:

<?php
	echo preg_replace('#a[a-z]+a#', '!', aAXa aeffa aGha aza ax23a a3sSa');
?>

Дана строка 'aAXa aeffa aGha aza ax23a a3sSa'. Напишите регулярку, которая найдет строки следующего вида: по краям стоят буквы 'a', а между ними - маленькие и большие латинские буквы, не затронув остальных.

Решение:

<?php
	echo preg_replace('#a[a-zA-Z]+a#', '!', 'aAXa aeffa aGha aza ax23a a3sSa');
?>

Дана строка 'aAXa aeffa aGha aza ax23a a3sSa'. Напишите регулярку, которая найдет строки следующего вида: по краям стоят буквы 'a', а между ними - маленькие латинские буквы и цифры, не затронув остальных.

Решение:

<?php
	echo preg_replace('#a[a-z0-9]+a#', '!', 'aAXa aeffa aGha aza ax23a a3sSa');
?>

Дана строка 'ааа ббб ёёё ззз ййй ААА БББ ЁЁЁ ЗЗЗ ЙЙЙ'. Напишите регулярку, которая найдет все слова по шаблону: любая кириллическая буква любое количество раз.

Решение:

<?php
	echo preg_replace('#[а-яА-ЯЁё]+#', '!', 'ааа ббб ёёё ззз ййй ААА БББ ЁЁЁ ЗЗЗ ЙЙЙ');
?>

На '^', '$'

Дана строка 'aaa aaa aaa'. Напишите регулярку, которая заменит первое 'aaa' на '!'.

Решение:

<?php
	echo preg_replace('#^aaa#', '!' ,'aaa aaa aaa');
?>

Дана строка 'aaa aaa aaa'. Напишите регулярку, которая заменит последнее 'aaa' на '!'.

Решение:

<?php
	echo preg_replace('#aaa$#', '!' ,'aaa aaa aaa');
?>

На '|'

Дана строка 'aeeea aeea aea axa axxa axxxa'. Напишите регулярку, которая найдет строки следующего вида: по краям стоят буквы 'a', а между ними - или буква 'e' любое количество раз или по краям стоят буквы 'a', а между ними - буква 'x' любое количество раз.

Решение:

<?php
	echo preg_replace('#a(e+|x+)a#', '!', 'aeeea aeea aea axa axxa axxxa');
?>

Дана строка 'aeeea aeea aea axa axxa axxxa'. Напишите регулярку, которая найдет строки следующего вида: по краям стоят буквы 'a', а между ними - или буква 'e' два раза или буква 'x' любое количество раз.

Решение:

<?php
	echo preg_replace('#a(ee|x+)a#', '!', 'aeeea aeea aea axa axxa axxxa');
?>

На \b, \B

Дана строка 'xbx aca aea abba adca abea'. Напишите регулярку, которая вокруг каждого слова вставит '!' (получится '!xbx! !aca! !aea! !abba! !adca! !abea!').

Решение:

<?php
	echo preg_replace('#\b#', '!', 'xbx aca aea abba adca abea');
?>

На обратный слеш \

Дана строка 'a\a abc'. Напишите регулярку, которая заменит строку 'a\a' на '!'.

Решение:

<?php
	echo preg_replace('#a\\\\a#', '!', 'a\a abc');
?>

Дана строка 'a\a a\\a a\\\a'. Напишите регулярку, которая заменит строку 'a\\\a' на '!'.

Решение:

<?php
	echo preg_replace('#a\\\\{3}a#', '!', 'a\a a\\a a\\\\\a');
?>

На экранировку посложнее

Дана строка 'bbb /aaa\ bbb /ccc\'. Напишите регулярку, которая найдет содержимое всех конструкций /...\ и заменит их на '!'.

Решение:

<?php
	echo preg_replace('#/[a-z]+\\\\#', '!', 'bbb /aaa\ bbb /ccc\\');
?>

Дана строка 'bbb <b> hello </b>, <b> world </b> eee'. Напишите регулярку, которая найдет содержимое тегов <b> и заменит их на '!'.

Решение:

<?php
	echo preg_replace('#<b>(.+?)</b>#', '!', 'bbb <b> hello </b>, <b> world </b> eee');
?>