Skupine simbolov v regularnih izrazih PHP
Obstajajo posebni ukazi, ki omogočajo
izbiro celih skupin simbolov naenkrat. Ukaz
\d pomeni številko od 0 do 9.
Ukaz \w označuje številko, latinično
črko ali znak za podčrtaj. Ukaz \s
označuje presledek ali presledni simbol:
presledek, prelom vrstice, tabulator. Lahko
obrnete pomen ukaza tako, da napišete veliko
črko: na primer, če je \d - številka,
potem je \D - ne številka.
Primer
Poiščimo vse številke:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! !! !!!'
Primer
Operatorji ponavljanja obravnavajo ukaze-skupine
kot eno celoto, kar pomeni, da oklepaji za združevanje
niso potrebni. V naslednjem primeru je vzorec iskanja
takšen: številka od 0 do 9
enkrat ali večkrat:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! ! ! abc @@@'
Primer
V naslednjem primeru je vzorec iskanja
takšen: karkoli enkrat ali večkrat,
vendar ne številka od 0 do 9:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'123!3!'
Primer
V tem primeru je vzorec iskanja takšen: presledni simbol enkrat:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'1!12!123!abc!@@@'
Primer
V tem primeru je vzorec iskanja takšen:
NE presledni simbol enkrat ali večkrat.
Vse podnizove, ločene s presledki, bomo zamenjali
z '!':
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! ! ! ! !'
Primer
V tem primeru je vzorec iskanja takšen:
številka ali črka enkrat ali večkrat.
Vsi podnizovi, sestavljeni iz številk in črk,
bodo zamenjani z '!':
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'! ! ! ! @@@'
Primer
V tem primeru je vzorec iskanja takšen:
NE številka in NE črka enkrat ali večkrat.
Pod to definicijo v našem primeru spada
'@@@' in vsi presledki (tudi ti so
namreč ne številke in ne črke). Bodite pozorni na
to, da je na koncu ena '!' - vanjo
se je preoblikoval niz ' @@@' - s
presledkom spredaj:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
Kot rezultat se bo v spremenljivko zapisalo naslednje:
'1!12!123!Abc!'
Praktične naloge
Podan je niz:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
Napišite regularni izraz, ki bo našel nize,
v katerih ob straneh stojita črki 'a',
med njima pa ena številka.
Podan je niz:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
Napišite regularni izraz, ki bo našel nize,
v katerih ob straneh stojita črki 'a',
med njima pa poljubno število števk.
Podan je niz:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
Napišite regularni izraz, ki bo našel nize,
v katerih ob straneh stojita črki 'a',
med njima pa poljubno število števk (vključno
z nič števk, torej niz 'aa').
Podan je niz:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
Napišite regularni izraz, ki bo našel nize
naslednje oblike: ob straneh stojita črki
'a' in 'b', med njima pa - ne
številka.
Podan je niz:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
Napišite regularni izraz, ki bo našel nize
naslednje oblike: ob straneh stojita črki
'a' in 'b', med njima pa - ne
črka in ne številka.
Podan je niz:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
Napišite regularni izraz, ki bo zamenjal vse presledke
z '!'.