PHP-də requlyar ifadələrdə simvol qrupları
Dərhal bütöv simvol qruplarını seçməyə imkan verən
xüsusi əmrlər mövcuddur. \d əmri 0-dan
9-a qədər rəqəmi ifadə edir. \w əmri
rəqəmi, latın hərfini və ya altxətt işarəsini
ifadə edir. \s əmri boşluq və ya boşluq
simvolunu ifadə edir: boşluq, sətirin köçürülməsi,
tabulyasiya. Əmrın dəyərini böyük hərflə yazaraq
çevirmək olar: məsələn, \d rəqəmdirsə,
\D rəqəm deyil.
Nümunə
Gəlin bütün rəqəmləri tapaq:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
Nəticədə dəyişənə aşağıdakı yazılacaq:
'! !! !!!'
Nümunə
Təkrar operatorları əmr-qruplarını bütöv hesab
edir, yəni qruplaşdırıcı mötərizələr lazım deyil.
Aşağıdakı nümunədə axtarış şablonu belə görünür:
0-dan 9-a qədər rəqəm bir və ya
daha çox dəfə:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
Nəticədə dəyişənə aşağıdakı yazılacaq:
'! ! ! abc @@@'
Nümunə
Aşağıdakı nümunədə axtarış şablonu belə görünür:
bir və ya daha çox dəfə istənilən şey, ancaq
0-dan 9-a qədər rəqəm deyil:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
Nəticədə dəyişənə aşağıdakı yazılacaq:
'123!3!'
Nümunə
Bu nümunədə axtarış şablonu belə görünür: boşluq simvolu bir dəfə:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
Nəticədə dəyişənə aşağıdakı yazılacaq:
'1!12!123!abc!@@@'
Nümunə
Bu nümunədə axtarış şablonu belə görünür:
boşluq simvolu OLMAYAN bir və ya daha çox dəfə.
Boşluqlarla ayrılmış bütün alt sətirlər '!' ilə
əvəz olunacaq:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
Nəticədə dəyişənə aşağıdakı yazılacaq:
'! ! ! ! !'
Nümunə
Bu nümunədə axtarış şablonu belə görünür:
rəqəm və ya hərf bir və ya daha çox dəfə.
Rəqəmlərdən və hərflərdən ibarət olan bütün alt sətirlər
'!' ilə əvəz olunacaq:
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
Nəticədə dəyişənə aşağıdakı yazılacaq:
'! ! ! ! @@@'
Nümunə
Bu nümunədə axtarış şablonu belə görünür:
rəqəm və hərf OLMAYAN bir və ya daha çox dəfə.
Bizim vəziyyətimizdə bu tərifə '@@@' və bütün
boşluqlar (onlar da nə rəqəm, nə də hərf olduğu üçün)
daxildir. Diqqət yetirin ki, sondakı bir '!' -
' @@@' sətiri onun içərisində boşluqla birlikdə
çevrilib:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
Nəticədə dəyişənə aşağıdakı yazılacaq:
'1!12!123!Abc!'
Praktiki tapşırıqlar
Bir sətir verilib:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
kənarlarında 'a' hərfləri, onların arasında
isə bir rəqəm olan sətirləri tapacaq requlyar ifadəni
yazın.
Bir sətir verilib:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
kənarlarında 'a' hərfləri, onların arasında
isə istənilən sayda rəqəm olan sətirləri tapacaq
requlyar ifadəni yazın.
Bir sətir verilib:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
kənarlarında 'a' hərfləri, onların arasında
isə istənilən sayda rəqəm (o cümlədən sıfır rəqəm,
yəni 'aa' sətiri) olan sətirləri tapacaq
requlyar ifadəni yazın.
Bir sətir verilib:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
Aşağıdakı növ sətirləri tapacaq requlyar ifadəni yazın:
kənarlarında 'a' və 'b' hərfləri,
onların arasında isə - rəqəm olmayan.
Bir sətir verilib:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
Aşağıdakı növ sətirləri tapacaq requlyar ifadəni yazın:
kənarlarında 'a' və 'b' hərfləri,
onların arasında isə - hərf və ya rəqəm olmayan.
Bir sətir verilib:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
Bütün boşluqları '!' ilə əvəz edəcək requlyar
ifadəni yazın.