Наборы сімвалаў у рэгулярных выразах PHP
Групы сімвалаў \d і \w не
вельмі гібкія. Нават такая простая задача,
як знайсці ўсе літары, але не лічбы -
не можа быць вырашана імі. Для такіх задач
след выкарыстоўваць квадратныя дужкі, якія прадстаўляюць
сабой аперацыю ЦІ.
Квадратныя дужкі замяняюць сабой адзін сімвал,
любы з пералічаных усярэдзіне. Напрыклад,
вось так: #x[abc]x# - мы кажам, што
па краях павінны стаяць літары ікс, а ўсярэдзіне
- адзін сімвал: альбо 'a', альбо 'b',
альбо 'c'.
Пасля квадратных дужак можна пісаць аператары
паўтарэння. Напрыклад, вось так: #x[abc]+x#
- мы кажам, што ўсярэдзіне іксаў можа быць
любая колькасць сімвалаў 'a', 'b'
і 'c' - у любых камбінацыях.
Можна не толькі пералічваць сімвалы, але ствараць
групы сімвалаў, запісваючы паміж двума сімваламі
злучок. Напрыклад, вось так: #[a-d]#
- мы атрымліваем усе сімвалы ад 'a' да
'd'.
Давайце паглядзім на прыкладах.
Прыклад
У гэтым прыкладзе шаблон пошуку выглядае так:
паміж іксамі любая літара ад 'a'
да 'z':
<?php
$str = 'xax xbx xcx x@x';
$res = preg_replace('#x[a-z]x#', '!', $str);
?>
У выніку ў зменную запишацца наступнае:
'! ! ! x@x'
Прыклад
У гэтым прыкладзе шаблон пошуку выглядае так:
паміж іксамі любая літара ад 'a'
да 'k':
<?php
$str = 'xax xbx xmx x@x';
$res = preg_replace('#x[a-k]x#', '!', $str);
?>
У выніку ў зменную запишацца наступнае:
'! ! xmx x@x'
Прыклад
У гэтым прыкладзе шаблон пошуку выглядае так:
паміж іксамі любая літара ад 'A'
да 'Z':
<?php
$str = 'xax xBx xcx x@x';
$res = preg_replace('#x[A-Z]x#', '!', $str);
?>
У выніку ў зменную запишацца наступнае:
'xax ! xcx x@x'
Прыклад
У гэтым прыкладзе шаблон пошуку выглядае так:
паміж іксамі любая лічба ад 0 да 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[0-9]x#', '!', $str);
?>
У выніку ў зменную запишацца наступнае:
'xax ! ! ! x@x'
Прыклад
У гэтым прыкладзе шаблон пошуку выглядае так:
паміж іксамі любая лічба ад 3 да 7:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[3-7]x#', '!', $str);
?>
У выніку ў зменную запишацца наступнае:
'xax x1x ! ! x@x'
Прыклад
У гэтым прыкладзе шаблон пошуку выглядае так:
паміж іксамі любая літара ад 'a'
да 'z' або лічба ад 1 да 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>
У выніку ў зменную запишацца наступнае:
'! ! ! ! x@x'
Прыклад
У гэтым прыкладзе шаблон пошуку выглядае так:
паміж іксамі любая літара ад 'a'
да 'z' або літара ад 'A' да
'Z':
<?php
$str = 'xax xBx xcx x5x x@x';
$res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>
У выніку ў зменную запишацца наступнае:
'! ! ! x5x x@x'
Прыклад
У гэтым прыкладзе шаблон пошуку выглядае так:
паміж іксамі любая літара ад 'a'
да 'z' або лічбы 1, 2:
<?php
$str = 'xax xbx x1x x2x x3x';
$res = preg_replace('#x[a-z12]x#', '!', $str);
?>
У выніку ў зменную запишацца наступнае:
'! ! ! ! x3x'
Прыклад
У гэтым прыкладзе шаблон пошуку выглядае так:
паміж іксамі літары ад 'a' да 'z'
у колькасці ад 1 і больш:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]+x#', '!', $str);
?>
У выніку ў зменную запишацца наступнае:
'xx ! ! ! x123x xa3x'
Прыклад
Зробім так, каб колькасць літар магло быць і нуль:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]*x#', '!', $str);
?>
У выніку ў зменную запишацца наступнае:
'! ! ! x123x xa3x'
Практычныя задачы
Дадзены радок:
<?php
$str = 'aba aea aca aza axa';
?>
Напішыце рэгулярку, якая знойдзе па наступным
шаблоне: па краях стаяць літары 'a',
а паміж імі - літара 'b', 'e'
альбо 'x'.
Дадзены радок:
<?php
$str = 'a1a a3a a7a a9a aba';
?>
Напішыце рэгулярку, якая знойдзе па наступным
шаблоне: па краях стаяць літары 'a',
а паміж імі - лічба ад 3-х да 6-ці.
Дадзены радок:
<?php
$str = 'aba aea afa aha aga';
?>
Напішыце рэгулярку, якая знойдзе па наступным
шаблоне: па краях стаяць літары 'a',
а паміж імі - літара ад a да g.
Дадзены радок:
<?php
$str = 'aba aea afa aha aga';
?>
Напішыце рэгулярку, якая знойдзе па наступным
шаблоне: па краях стаяць літары 'a',
а паміж імі - літара ад a да f і ад j да z.
Дадзены радок:
<?php
$str = 'aAa aea aEa aJa a3a';
?>
Напішыце рэгулярку, якая знойдзе па наступным
шаблоне: па краях стаяць літары 'a',
а паміж імі - літара ад a да f і ад A да D.
Дадзены радок:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Напішыце рэгулярку, якая знойдзе па наступным
шаблоне: па краях стаяць літары 'a',
а паміж імі - маленькія лацінскія літары,
не зачапіўшы астатніх.
Дадзены радок:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Напішыце рэгулярку, якая знойдзе па наступным
шаблоне: па краях стаяць літары 'a',
а паміж імі - маленькія і вялікія лацінскія
літары, не зачапіўшы астатніх.
Дадзены радок:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Напішыце рэгулярку, якая знойдзе па наступным
шаблоне: па краях стаяць літары 'a',
а паміж імі - маленькія лацінскія літары
і лічбы, не зачапіўшы астатніх.