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
$str = 'xax xbx xcx x@x';
$res = preg_replace('#x[a-z]x#', '!', $str);
?>
Kao rezultat u promenljivu će biti zapisano sledeće:
'! ! ! x@x'
Primer
U ovom primeru obrazac pretrage izgleda ovako:
između x-ova bilo koje slovo od 'a'
do 'k':
<?php
$str = 'xax xbx xmx x@x';
$res = preg_replace('#x[a-k]x#', '!', $str);
?>
Kao rezultat u promenljivu će biti zapisano sledeće:
'! ! xmx x@x'
Primer
U ovom primeru obrazac pretrage izgleda ovako:
između x-ova bilo koje slovo od 'A'
do 'Z':
<?php
$str = 'xax xBx xcx x@x';
$res = preg_replace('#x[A-Z]x#', '!', $str);
?>
Kao rezultat u promenljivu će biti zapisano sledeće:
'xax ! xcx x@x'
Primer
U ovom primeru obrazac pretrage izgleda ovako:
između x-ova bilo koja cifra od 0 do 9:
<?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:
'xax ! ! ! x@x'
Primer
U ovom primeru obrazac pretrage izgleda ovako:
između x-ova bilo koja cifra od 3 do 7:
<?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:
'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
$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:
'! ! ! ! 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
$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:
'! ! ! 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
$str = 'xax xbx x1x x2x x3x';
$res = preg_replace('#x[a-z12]x#', '!', $str);
?>
Kao rezultat u promenljivu će biti zapisano sledeće:
'! ! ! ! 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
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]+x#', '!', $str);
?>
Kao rezultat u promenljivu će biti zapisano sledeće:
'xx ! ! ! x123x xa3x'
Primer
Učinimo da količina slova može biti i nula:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]*x#', '!', $str);
?>
Kao rezultat u promenljivu će biti zapisano sledeće:
'! ! ! x123x xa3x'
Praktični zadaci
Data je linija:
<?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'.
Data je linija:
<?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.
Data je linija:
<?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.
Data je linija:
<?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.
Data je linija:
<?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.
Data je linija:
<?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.
Data je linija:
<?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.
Data je linija:
<?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.