Nabori znakov v regularnih izrazih PHP
Skupine znakov \d in \w niso
zelo prilagodljive. Celo tako preprosta naloga,
kot je poisci vse črke, ne pa številk -
ne more biti rešena z njimi. Za takšne naloge
je treba uporabiti oglate oklepaje, ki predstavljajo
operacijo ALI.
Oglati oklepaji nadomeščajo en znak,
katerega koli od naštetih znotraj. Na primer,
tako: #x[abc]x# - povemo, da
ob straneh morajo stati črke x, znotraj
- pa en znak: ali 'a', ali 'b',
ali 'c'.
Za oglatimi oklepaji lahko pišemo operatorje
ponavljanja. Na primer, tako: #x[abc]+x#
- povemo, da je med znakoma x lahko
poljubno število znakov 'a', 'b'
in 'c' - v poljubnih kombinacijah.
Lahko ne samo naštejemo znake, ampak ustvarimo
skupine znakov, tako da med dva znaka
zapišemo vezaj. Na primer, tako: #[a-d]#
- dobimo vse znake od 'a' do
'd'.
Poglejmo si na primerih.
Primer
V tem primeru je vzorec iskanja takšen:
med znakoma x katera koli črka od 'a'
do 'z':
<?php
$str = 'xax xbx xcx x@x';
$res = preg_replace('#x[a-z]x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! ! ! x@x'
Primer
V tem primeru je vzorec iskanja takšen:
med znakoma x katera koli črka od 'a'
do 'k':
<?php
$str = 'xax xbx xmx x@x';
$res = preg_replace('#x[a-k]x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! ! xmx x@x'
Primer
V tem primeru je vzorec iskanja takšen:
med znakoma x katera koli črka od 'A'
do 'Z':
<?php
$str = 'xax xBx xcx x@x';
$res = preg_replace('#x[A-Z]x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'xax ! xcx x@x'
Primer
V tem primeru je vzorec iskanja takšen:
med znakoma x katera koli številka od 0 do 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[0-9]x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'xax ! ! ! x@x'
Primer
V tem primeru je vzorec iskanja takšen:
med znakoma x katera koli številka od 3 do 7:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[3-7]x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'xax x1x ! ! x@x'
Primer
V tem primeru je vzorec iskanja takšen:
med znakoma x katera koli črka od 'a'
do 'z' ali številka od 1 do 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! ! ! ! x@x'
Primer
V tem primeru je vzorec iskanja takšen:
med znakoma x katera koli črka od 'a'
do 'z' ali črka od 'A' do
'Z':
<?php
$str = 'xax xBx xcx x5x x@x';
$res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! ! ! x5x x@x'
Primer
V tem primeru je vzorec iskanja takšen:
med znakoma x katera koli črka od 'a'
do 'z' ali številki 1, 2:
<?php
$str = 'xax xbx x1x x2x x3x';
$res = preg_replace('#x[a-z12]x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! ! ! ! x3x'
Primer
V tem primeru je vzorec iskanja takšen:
med znakoma x črke od 'a' do 'z'
v količini od 1 in več:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]+x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'xx ! ! ! x123x xa3x'
Primer
Naredimo tako, da je lahko število črk tudi nič:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]*x#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! ! ! x123x xa3x'
Praktične naloge
Podan je niz:
<?php
$str = 'aba aea aca aza axa';
?>
Napišite regularni izraz, ki bo poiskal po naslednjem
vzorcu: ob straneh so črke 'a',
med njimi pa - črka 'b', 'e'
ali 'x'.
Podan je niz:
<?php
$str = 'a1a a3a a7a a9a aba';
?>
Napišite regularni izraz, ki bo poiskal po naslednjem
vzorcu: ob straneh so črke 'a',
med njimi pa - številka od 3-ih do 6-ih.
Podan je niz:
<?php
$str = 'aba aea afa aha aga';
?>
Napišite regularni izraz, ki bo poiskal po naslednjem
vzorcu: ob straneh so črke 'a',
med njimi pa - črka od a do g.
Podan je niz:
<?php
$str = 'aba aea afa aha aga';
?>
Napišite regularni izraz, ki bo poiskal po naslednjem
vzorcu: ob straneh so črke 'a',
med njimi pa - črka od a do f in od j do z.
Podan je niz:
<?php
$str = 'aAa aea aEa aJa a3a';
?>
Napišite regularni izraz, ki bo poiskal po naslednjem
vzorcu: ob straneh so črke 'a',
med njimi pa - črka od a do f in od A do D.
Podan je niz:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Napišite regularni izraz, ki bo poiskal po naslednjem
vzorcu: ob straneh so črke 'a',
med njimi pa - male latinične črke,
ne da bi prizadel ostale.
Podan je niz:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Napišite regularni izraz, ki bo poiskal po naslednjem
vzorcu: ob straneh so črke 'a',
med njimi pa - male in velike latinične
črke, ne da bi prizadel ostale.
Podan je niz:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Napišite regularni izraz, ki bo poiskal po naslednjem
vzorcu: ob straneh so črke 'a',
med njimi pa - male latinične črke
in številke, ne da bi prizadel ostale.