Acolade în expresiile regulate PHP
Operatorii +, *, ? sunt buni,
dar, cu ajutorul lor nu poți specifica un număr
exact de repetări. În acest caz, operatorul
{} îți va veni în ajutor.
Funcționează în felul următor: {5}
- cinci repetări, {2,5} - se repetă
de la doi la cinci (ambele incluse), {2,}
- se repetă de două ori sau mai mult.
Exemplu
În acest exemplu, șablonul de căutare arată astfel:
litera 'x', litera 'a' o dată
sau de două ori, litera 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următoarele:
'xx ! ! xaaax'
Exemplu
În acest exemplu, șablonul de căutare arată astfel:
litera 'x', litera 'a' de două
ori sau mai mult, litera 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următoarele:
'xx xax ! !'
Exemplu
În acest exemplu, șablonul de căutare arată astfel:
litera 'x', litera 'a' de trei
ori, litera 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următoarele:
'xx xax xaax !'
Exemplu
În acest exemplu, șablonul de căutare arată astfel:
litera 'a' de zece ori:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următoarele:
'aaa ! aaa'
Exemplu
În acest exemplu, autorul codului a vrut acest șablon:
litera 'x', litera 'a' de trei
ori sau mai puțin, litera 'x',
dar, din păcate, așa ceva - {,3} - nu
funcționează. Trebuie specificat explicit:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următoarele:
'xx ! ! !'
Exemplu
Zero este de asemenea permis:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
Ca rezultat, în variabilă se va scrie următoarele:
'! ! ! !'
Probleme practice
Este dat șirul:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Scrieți o expresie regulată care va găsi șirurile
'abba', 'abbba', 'abbbba'
și numai pe acestea.
Este dat șirul:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Scrieți o expresie regulată care va găsi șirurile
de tipul 'aba', în care 'b' apare
mai puțin de trei ori (inclusiv).
Este dat șirul:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Scrieți o expresie regulată care va găsi șirurile
de tipul 'aba', în care 'b' apare
mai mult de patru ori (inclusiv).