Sümbolikomplektid PHP regulaaravaldistes
Sümbolirühmad \d ja \w ei
ole väga paindlikud. Isegi nii lihtne ülesanne
nagu leida kõik tähed, kuid mitte numbrid -
ei saa nendega lahendatud. Selliste ülesannete jaoks
tuleks kasutada nurksulge, mis esindavad
VÕI operatsiooni.
Nurksulgud asendavad ühe sümboli,
ükskõik millise loetletutest seespool. Näiteks
nii: #x[abc]x# - ütleme, et
servades peavad olema tähed x, ja seespool
- üks sümbol: kas 'a', 'b',
või 'c'.
Pärast nurksulge saab kirjutada kordusoperaatoreid.
Näiteks nii: #x[abc]+x#
- me ütleme, et x-de sees võib olla
suvaline arv sümboleid 'a', 'b'
ja 'c' - mis tahes kombinatsioonides.
Võib mitte ainult loetleda sümboleid, vaid luua
sümbolirühmi, kirjutades kahe sümboli vahele
kriipsu. Näiteks nii: #[a-d]#
- saame kõik sümbolid alates 'a' kuni
'd'.
Vaatame näidetel.
Näide
Selles näites näeb otsimismust välja selline:
x-de vahel suvaline täht alates 'a'
kuni 'z':
<?php
$str = 'xax xbx xcx x@x';
$res = preg_replace('#x[a-z]x#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'! ! ! x@x'
Näide
Selles näites näeb otsimismust välja selline:
x-de vahel suvaline täht alates 'a'
kuni 'k':
<?php
$str = 'xax xbx xmx x@x';
$res = preg_replace('#x[a-k]x#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'! ! xmx x@x'
Näide
Selles näites näeb otsimismust välja selline:
x-de vahel suvaline täht alates 'A'
kuni 'Z':
<?php
$str = 'xax xBx xcx x@x';
$res = preg_replace('#x[A-Z]x#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'xax ! xcx x@x'
Näide
Selles näites näeb otsimismust välja selline:
x-de vahel suvaline number alates 0 kuni 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[0-9]x#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'xax ! ! ! x@x'
Näide
Selles näites näeb otsimismust välja selline:
x-de vahel suvaline number alates 3 kuni 7:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[3-7]x#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'xax x1x ! ! x@x'
Näide
Selles näites näeb otsimismust välja selline:
x-de vahel suvaline täht alates 'a'
kuni 'z' või number alates 1 kuni 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'! ! ! ! x@x'
Näide
Selles näites näeb otsimismust välja selline:
x-de vahel suvaline täht alates 'a'
kuni 'z' või täht alates 'A' kuni
'Z':
<?php
$str = 'xax xBx xcx x5x x@x';
$res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'! ! ! x5x x@x'
Näide
Selles näites näeb otsimismust välja selline:
x-de vahel suvaline täht alates 'a'
kuni 'z' või numbrid 1, 2:
<?php
$str = 'xax xbx x1x x2x x3x';
$res = preg_replace('#x[a-z12]x#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'! ! ! ! x3x'
Näide
Selles näites näeb otsimismust välja selline:
x-de vahel tähed alates 'a' kuni 'z'
koguses alates 1 ja rohkem:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]+x#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'xx ! ! ! x123x xa3x'
Näide
Teeme nii, et tähtede arv võiks olla ka null:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]*x#', '!', $str);
?>
Tulemusena kirjutatakse muutujasse järgmine:
'! ! ! x123x xa3x'
Praktilised ülesanded
Antud on sõne:
<?php
$str = 'aba aea aca aza axa';
?>
Kirjutage regulaaravaldis, mis leiab järgmise
mustri järgi: servades on tähed 'a',
ja nende vahel - täht 'b', 'e'
või 'x'.
Antud on sõne:
<?php
$str = 'a1a a3a a7a a9a aba';
?>
Kirjutage regulaaravaldis, mis leiab järgmise
mustri järgi: servades on tähed 'a',
ja nende vahel - number alates 3-st kuni 6-ni.
Antud on sõne:
<?php
$str = 'aba aea afa aha aga';
?>
Kirjutage regulaaravaldis, mis leiab järgmise
mustri järgi: servades on tähed 'a',
ja nende vahel - täht a-st kuni g-ni.
Antud on sõne:
<?php
$str = 'aba aea afa aha aga';
?>
Kirjutage regulaaravaldis, mis leiab järgmise
mustri järgi: servades on tähed 'a',
ja nende vahel - täht a-st kuni f-ni ja j-st kuni z-ni.
Antud on sõne:
<?php
$str = 'aAa aea aEa aJa a3a';
?>
Kirjutage regulaaravaldis, mis leiab järgmise
mustri järgi: servades on tähed 'a',
ja nende vahel - täht a-st kuni f-ni ja A-st kuni D-ni.
Antud on sõne:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Kirjutage regulaaravaldis, mis leiab järgmise
mustri järgi: servades on tähed 'a',
ja nende vahel - väikesed ladina tähed,
puudutamata ülejäänud.
Antud on sõne:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Kirjutage regulaaravaldis, mis leiab järgmise
mustri järgi: servades on tähed 'a',
ja nende vahel - väikesed ja suured ladina
tähed, puudutamata ülejäänud.
Antud on sõne:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Kirjutage regulaaravaldis, mis leiab järgmise
mustri järgi: servades on tähed 'a',
ja nende vahel - väikesed ladina tähed
ja numbrid, puudutamata ülejäänud.