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<?php
  $str = '1 12 123';
  $res = preg_replace('#\d#', '!', $str);
?>

Nəticədə dəyişənə aşağıdakı yazılacaq:

php'! !! !!!'

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<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\d+#', '!', $str);
?>

Nəticədə dəyişənə aşağıdakı yazılacaq:

php'! ! ! 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<?php
  $str = '123abc3@@';
  $res = preg_replace('#\D+#', '!', $str);
?>

Nəticədə dəyişənə aşağıdakı yazılacaq:

php'123!3!'

Nümunə

Bu nümunədə axtarış şablonu belə görünür: boşluq simvolu bir dəfə:

php<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\s#', '!', $str);
?>

Nəticədə dəyişənə aşağıdakı yazılacaq:

php'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<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\S+#', '!', $str);
?>

Nəticədə dəyişənə aşağıdakı yazılacaq:

php'! ! ! ! !'

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<?php
  $str = '1 12 123a Abc @@@';
  $res = preg_replace('#\w+#', '!', $str);
?>

Nəticədə dəyişənə aşağıdakı yazılacaq:

php'! ! ! ! @@@'

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:

php$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);

Nəticədə dəyişənə aşağıdakı yazılacaq:

php'1!12!123!Abc!'

Praktiki tapşırıqlar

Задание 1

Bir sətir verilib:

php<?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.

Задание 2

Bir sətir verilib:

php<?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.

Задание 3

Bir sətir verilib:

php<?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.

Задание 4

Bir sətir verilib:

php<?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.

Задание 5

Bir sətir verilib:

php<?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.

Задание 6

Bir sətir verilib:

php<?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.