Скупови карактера у регуларним изразима 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', а између њих - мала латинична слова и цифре, не дирајући остала.