RegEx-də Simvol Təkrarlama Operatorları

Elə hallar olur ki, biz göstərmək istəyirik ki, simvol müəyyən sayda təkrarlanır. Əgər dəqiq təkrarlanma sayını biliriksə, onda sadəcə onu bir neçə dəfə yaza bilərik - #aaaa#. Bəs biz belə bir şey demək istəsək: bir və ya daha çox dəfə təkrarla?

Bunun üçün (kvantifikatorlar) təkrarlama operatorları mövcuddur: plus + (bir və ya daha çox dəfə), ulduz * (sıfır və ya daha çox dəfə) və sual işarəsi ? (sıfır və ya bir dəfə). Bu operatorlar özlərindən əvvəl gələn simvola təsir edir.

Gəlin bu operatorların işini nümunələr üzərində nəzərdən keçirək.

Nümunə

Şablona uyğun olan bütün alt sətirləri tapaq: hərf 'x', 'a' hərfi bir və ya daha çox dəfə, 'x' hərfi:

php<?php
  $str = 'xx xax xaax xaaax xbx';
  $res = preg_replace('#xa+x#', '!', $str);
?>

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

php'xx ! ! ! xbx'

Nümunə

Şablona uyğun olan bütün alt sətirləri tapaq: hərf 'x', 'a' hərfi sıfır və ya daha çox dəfə, 'x' hərfi:

php<?php
  $str = 'xx xax xaax xaaax xbx';
  $res = preg_replace('#xa*x#', '!', $str);
?>

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

php'! ! ! ! xbx'

Nümunə

Şablona uyğun olan bütün alt sətirləri tapaq: hərf 'x', 'a' hərfi sıfır və ya bir dəfə, 'x' hərfi:

php<?php
  $str = 'xx xax xaax xbx';
  $res = preg_replace('#xa?x#', '!', $str);
?>

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

php'! ! xaax xbx'

Praktiki Tapşırıqlar

Задание 1

Bir sətir verilib:

php<?php
  $str = 'aa aba abba abbba abca abea';
?>

Bu şablona uyğun sətirləri tapacaq regex yazın: 'a' hərfi, 'b' hərfi bir və ya daha çox dəfə, 'a' hərfi.

Задание 2

Bir sətir verilib:

php<?php
  $str = 'aa aba abba abbba abca abea';
?>

Bu şablona uyğun sətirləri tapacaq regex yazın: 'a' hərfi, 'b' hərfi sıfır və ya daha çox dəfə, 'a' hərfi.

Задание 3

Bir sətir verilib:

php<?php
  $str = 'aa aba abba abbba abca abea';
?>

Bu şablona uyğun sətirləri tapacaq regex yazın: 'a' hərfi, 'b' hərfi bir dəfə ya da heç, 'a' hərfi.

Задание 4

Bir sətir verilib:

php<?php
  $str = 'aa aba abba abbba abca abea';
?>

'abca' və 'abea'-i əhatə etmədən, 'aa', 'aba', 'abba', 'abbba' sətirlərini tapacaq regex yazın.