Наборы сімвалаў у рэгулярных выразах PHP

Групы сімвалаў \d і \w не вельмі гібкія. Нават такая простая задача, як знайсці ўсе літары, але не лічбы - не можа быць вырашана імі. Для такіх задач след выкарыстоўваць квадратныя дужкі, якія прадстаўляюць сабой аперацыю ЦІ.

Квадратныя дужкі замяняюць сабой адзін сімвал, любы з пералічаных усярэдзіне. Напрыклад, вось так: #x[abc]x# - мы кажам, што па краях павінны стаяць літары ікс, а ўсярэдзіне - адзін сімвал: альбо 'a', альбо 'b', альбо 'c'.

Пасля квадратных дужак можна пісаць аператары паўтарэння. Напрыклад, вось так: #x[abc]+x# - мы кажам, што ўсярэдзіне іксаў можа быць любая колькасць сімвалаў 'a', 'b' і 'c' - у любых камбінацыях.

Можна не толькі пералічваць сімвалы, але ствараць групы сімвалаў, запісваючы паміж двума сімваламі злучок. Напрыклад, вось так: #[a-d]# - мы атрымліваем усе сімвалы ад 'a' да 'd'.

Давайце паглядзім на прыкладах.

Прыклад

У гэтым прыкладзе шаблон пошуку выглядае так: паміж іксамі любая літара ад 'a' да 'z':

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

У выніку ў зменную запишацца наступнае:

php'! ! ! x@x'

Прыклад

У гэтым прыкладзе шаблон пошуку выглядае так: паміж іксамі любая літара ад 'a' да 'k':

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

У выніку ў зменную запишацца наступнае:

php'! ! xmx x@x'

Прыклад

У гэтым прыкладзе шаблон пошуку выглядае так: паміж іксамі любая літара ад 'A' да 'Z':

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

У выніку ў зменную запишацца наступнае:

php'xax ! xcx x@x'

Прыклад

У гэтым прыкладзе шаблон пошуку выглядае так: паміж іксамі любая лічба ад 0 да 9:

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

У выніку ў зменную запишацца наступнае:

php'xax ! ! ! x@x'

Прыклад

У гэтым прыкладзе шаблон пошуку выглядае так: паміж іксамі любая лічба ад 3 да 7:

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

У выніку ў зменную запишацца наступнае:

php'xax x1x ! ! x@x'

Прыклад

У гэтым прыкладзе шаблон пошуку выглядае так: паміж іксамі любая літара ад 'a' да 'z' або лічба ад 1 да 9:

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

У выніку ў зменную запишацца наступнае:

php'! ! ! ! x@x'

Прыклад

У гэтым прыкладзе шаблон пошуку выглядае так: паміж іксамі любая літара ад 'a' да 'z' або літара ад 'A' да 'Z':

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

У выніку ў зменную запишацца наступнае:

php'! ! ! x5x x@x'

Прыклад

У гэтым прыкладзе шаблон пошуку выглядае так: паміж іксамі любая літара ад 'a' да 'z' або лічбы 1, 2:

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

У выніку ў зменную запишацца наступнае:

php'! ! ! ! x3x'

Прыклад

У гэтым прыкладзе шаблон пошуку выглядае так: паміж іксамі літары ад 'a' да 'z' у колькасці ад 1 і больш:

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

У выніку ў зменную запишацца наступнае:

php'xx ! ! ! x123x xa3x'

Прыклад

Зробім так, каб колькасць літар магло быць і нуль:

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

У выніку ў зменную запишацца наступнае:

php'! ! ! x123x xa3x'

Практычныя задачы

Задание 1

Дадзены радок:

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

Напішыце рэгулярку, якая знойдзе па наступным шаблоне: па краях стаяць літары 'a', а паміж імі - літара 'b', 'e' альбо 'x'.

Задание 2

Дадзены радок:

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

Напішыце рэгулярку, якая знойдзе па наступным шаблоне: па краях стаяць літары 'a', а паміж імі - лічба ад 3-х да 6-ці.

Задание 3

Дадзены радок:

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

Напішыце рэгулярку, якая знойдзе па наступным шаблоне: па краях стаяць літары 'a', а паміж імі - літара ад a да g.

Задание 4

Дадзены радок:

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

Напішыце рэгулярку, якая знойдзе па наступным шаблоне: па краях стаяць літары 'a', а паміж імі - літара ад a да f і ад j да z.

Задание 5

Дадзены радок:

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

Напішыце рэгулярку, якая знойдзе па наступным шаблоне: па краях стаяць літары 'a', а паміж імі - літара ад a да f і ад A да D.

Задание 6

Дадзены радок:

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

Напішыце рэгулярку, якая знойдзе па наступным шаблоне: па краях стаяць літары 'a', а паміж імі - маленькія лацінскія літары, не зачапіўшы астатніх.

Задание 7

Дадзены радок:

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

Напішыце рэгулярку, якая знойдзе па наступным шаблоне: па краях стаяць літары 'a', а паміж імі - маленькія і вялікія лацінскія літары, не зачапіўшы астатніх.

Задание 8

Дадзены радок:

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

Напішыце рэгулярку, якая знойдзе па наступным шаблоне: па краях стаяць літары 'a', а паміж імі - маленькія лацінскія літары і лічбы, не зачапіўшы астатніх.