Grupet e karaktereve në shprehjet e rregullta PHP
Ekzistojnë komanda të veçanta që lejojnë
përzgjedhjen e grupeve të tëra të karaktereve menjëherë. Komanda
\d nënkupton një shifër nga 0 në 9.
Komanda \w shënon një shifër, shkronjë
latinose ose shenjën e nënvizimit. Komanda \s
shënon një hapësirë ose karakter hapësiror:
hapësirë, ndërrim rreshti, tabulim. Është e mundur
të invertosh vlerën e komandës, duke shkruar shkronjë
të madhe: për shembull, nëse \d - shifër,
atëherë \D - jo shifër.
Shembull
Le të gjejmë të gjitha shifrat:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
Si rezultat në variabël do të shkruhet si më poshtë:
'! !! !!!'
Shembull
Operatorët e përsëritjes i konsiderojnë komandat-grupe
si një të tërë, domethënë kllapat grupuese
nuk janë të nevojshme. Në shembullin vijues shablloni i kërkimit
duket kështu: shifër nga 0 në 9
një herë ose më shumë:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
Si rezultat në variabël do të shkruhet si më poshtë:
'! ! ! abc @@@'
Shembull
Në shembullin vijues shablloni i kërkimit duket
kështu: çfarëdo gjëje një herë ose më shumë,
por jo shifër nga 0 në 9:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
Si rezultat në variabël do të shkruhet si më poshtë:
'123!3!'
Shembull
Në këtë shembull shablloni i kërkimit duket kështu: karakter hapësiror një herë:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
Si rezultat në variabël do të shkruhet si më poshtë:
'1!12!123!abc!@@@'
Shembull
Në këtë shembull shablloni i kërkimit duket kështu:
JO karakter hapësiror një herë ose më shumë.
Të gjitha nënvargjet, të ndara me hapësira, do të zëvendësohen
me '!':
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
Si rezultat në variabël do të shkruhet si më poshtë:
'! ! ! ! !'
Shembull
Në këtë shembull shablloni i kërkimit duket kështu:
shifër ose shkronjë një herë ose më shumë.
Të gjitha nënvargjet, të përbëra nga shifra dhe shkronja,
do të zëvendësohen me '!':
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
Si rezultat në variabël do të shkruhet si më poshtë:
'! ! ! ! @@@'
Shembull
Në këtë shembull shablloni i kërkimit duket kështu:
JO shifër dhe JO shkronjë një herë ose më shumë.
Në përkufizimin e dhënë në rastin tonë bie
'@@@' dhe të gjitha hapësirat (ato gjithashtu
nuk janë shifra dhe as shkronja). Kushtojini vëmendje
asaj që në fund është një '!' - në të
u shndërrua vargu ' @@@' - me
hapësirë përpara:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
Si rezultat në variabël do të shkruhet si më poshtë:
'1!12!123!Abc!'
Detyra praktike
Është dhënë vargu:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
Shkruani një regex, e cila do të gjejë vargjet,
në të cilat në anët qëndrojnë shkronjat 'a',
dhe midis tyre një shifër.
Është dhënë vargu:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
Shkruani një regex, e cila do të gjejë vargjet,
në të cilat në anët qëndrojnë shkronjat 'a',
dhe midis tyre çfarëdo numri shifrash.
Është dhënë vargu:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
Shkruani një regex, e cila do të gjejë vargjet,
në të cilat në anët qëndrojnë shkronjat 'a',
dhe midis tyre çfarëdo numri shifrash (duke përfshirë
edhe zero shifra, domethënë vargu 'aa').
Është dhënë vargu:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
Shkruani një regex, e cila do të gjejë vargjet
të llojit vijues: në anët qëndrojnë shkronjat
'a' dhe 'b', dhe midis tyre - jo
numër.
Është dhënë vargu:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
Shkruani një regex, e cila do të gjejë vargjet
të llojit vijues: në anët qëndrojnë shkronjat
'a' dhe 'b', dhe midis tyre - jo
shkronjë dhe jo shifër.
Është dhënë vargu:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
Shkruani një regex, e cila do të zëvendësojë të gjitha hapësirat
me '!'.