Skupovi karaktera u regularnim izrazima PHP

Grupe karaktera \d i \w nisu veoma fleksibilne. Čak ni tako jednostavan zadatak, kao što je pronaći sva slova, ali ne i cifre - ne može biti rešen njima. Za takve zadatke treba koristiti uglaste zagrade, koje predstavljaju operaciju ILI.

Uglaste zagrade zamenjuju jedan karakter, bilo koji od navedenih unutra. Na primer, ovako: #x[abc]x# - kažemo da sa strana moraju stajati slova x, a unutra - jedan simbol: ili 'a', ili 'b', ili 'c'.

Iza uglastih zagrada mogu se pisati operatori ponavljanja. Na primer, ovako: #x[abc]+x# - kažemo da između x-ova može biti bilo koja količina simbola 'a', 'b' i 'c' - u bilo kojim kombinacijama.

Mogu se ne samo navoditi simboli, već i praviti grupe simbola, pišući između dva simbola crticu. Na primer, ovako: #[a-d]# - dobijamo sve simbole od 'a' do 'd'.

Pogledajmo na primerima.

Primer

U ovom primeru obrazac pretrage izgleda ovako: između x-ova bilo koje slovo od 'a' do 'z':

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

Kao rezultat u promenljivu će biti zapisano sledeće:

php'! ! ! x@x'

Primer

U ovom primeru obrazac pretrage izgleda ovako: između x-ova bilo koje slovo od 'a' do 'k':

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

Kao rezultat u promenljivu će biti zapisano sledeće:

php'! ! xmx x@x'

Primer

U ovom primeru obrazac pretrage izgleda ovako: između x-ova bilo koje slovo od 'A' do 'Z':

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

Kao rezultat u promenljivu će biti zapisano sledeće:

php'xax ! xcx x@x'

Primer

U ovom primeru obrazac pretrage izgleda ovako: između x-ova bilo koja cifra od 0 do 9:

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

Kao rezultat u promenljivu će biti zapisano sledeće:

php'xax ! ! ! x@x'

Primer

U ovom primeru obrazac pretrage izgleda ovako: između x-ova bilo koja cifra od 3 do 7:

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

Kao rezultat u promenljivu će biti zapisano sledeće:

php'xax x1x ! ! x@x'

Primer

U ovom primeru obrazac pretrage izgleda ovako: između x-ova bilo koje slovo od 'a' do 'z' ili cifra od 1 do 9:

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

Kao rezultat u promenljivu će biti zapisano sledeće:

php'! ! ! ! x@x'

Primer

U ovom primeru obrazac pretrage izgleda ovako: između x-ova bilo koje slovo od 'a' do 'z' ili slovo od 'A' do 'Z':

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

Kao rezultat u promenljivu će biti zapisano sledeće:

php'! ! ! x5x x@x'

Primer

U ovom primeru obrazac pretrage izgleda ovako: između x-ova bilo koje slovo od 'a' do 'z' ili cifre 1, 2:

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

Kao rezultat u promenljivu će biti zapisano sledeće:

php'! ! ! ! x3x'

Primer

U ovom primeru obrazac pretrage izgleda ovako: između x-ova slova od 'a' do 'z' u količini od 1 i više:

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

Kao rezultat u promenljivu će biti zapisano sledeće:

php'xx ! ! ! x123x xa3x'

Primer

Učinimo da količina slova može biti i nula:

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

Kao rezultat u promenljivu će biti zapisano sledeće:

php'! ! ! x123x xa3x'

Praktični zadaci

Задание 1

Data je linija:

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

Napišite regularni izraz, koji će pronaći po sledećem obrascu: sa strana stoje slova 'a', a između njih - slovo 'b', 'e' ili 'x'.

Задание 2

Data je linija:

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

Napišite regularni izraz, koji će pronaći po sledećem obrascu: sa strana stoje slova 'a', a između njih - cifra od 3-ih do 6-ti.

Задание 3

Data je linija:

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

Napišite regularni izraz, koji će pronaći po sledećem obrascu: sa strana stoje slova 'a', a između njih - slovo od a do g.

Задание 4

Data je linija:

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

Napišite regularni izraz, koji će pronaći po sledećem obrascu: sa strana stoje slova 'a', a između njih - slovo od a do f i od j do z.

Задание 5

Data je linija:

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

Napišite regularni izraz, koji će pronaći po sledećem obrascu: sa strana stoje slova 'a', a između njih - slovo od a do f i od A do D.

Задание 6

Data je linija:

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

Napišite regularni izraz, koji će pronaći po sledećem obrascu: sa strana stoje slova 'a', a između njih - mala latinična slova, ne dotičući ostalih.

Задание 7

Data je linija:

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

Napišite regularni izraz, koji će pronaći po sledećem obrascu: sa strana stoje slova 'a', a između njih - mala i velika latinična slova, ne dotičući ostalih.

Задание 8

Data je linija:

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

Napišite regularni izraz, koji će pronaći po sledećem obrascu: sa strana stoje slova 'a', a između njih - mala latinična slova i cifre, ne dotičući ostalih.