Kapcsos zárójelek a PHP reguláris kifejezéseiben
A +, *, ? operátorok hasznosak,
azonban velük nem lehet megadni a konkrét
ismétlések számát. Ilyen esetben a {}
operátor segítségére lesz szükség.
A működése a következő: {5}
- öt ismétlés, {2,5} - két és öt közötti ismétlés
(mindkettőt beleértve), {2,}
- kétszer vagy többször ismétlődik.
Példa
Ebben a példában a keresési minta így néz ki:
'x' betű, 'a' betű egyszer
vagy kétszer, 'x' betű:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
Ennek eredményeképpen a változóba a következő íródik:
'xx ! ! xaaax'
Példa
Ebben a példában a keresési minta így néz ki:
'x' betű, 'a' betű kétszer
vagy többször, 'x' betű:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
Ennek eredményeképpen a változóba a következő íródik:
'xx xax ! !'
Példa
Ebben a példában a keresési minta így néz ki:
'x' betű, 'a' betű háromszor,
'x' betű:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
Ennek eredményeképpen a változóba a következő íródik:
'xx xax xaax !'
Példa
Ebben a példában a keresési minta így néz ki:
'a' betű tízszer:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
Ennek eredményeképpen a változóba a következő íródik:
'aaa ! aaa'
Példa
Ebben a példában a kód szerzője a következő mintát szerette volna:
'x' betű, 'a' betű háromszor
vagy kevesebb, 'x' betű,
de sajnos ez - {,3} - nem
működik. Explicit módon kell megadni:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
Ennek eredményeképpen a változóba a következő íródik:
'xx ! ! !'
Példa
A nulla is megengedett:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
Ennek eredményeképpen a változóba a következő íródik:
'! ! ! !'
Gyakorlati feladatok
Adott egy sztring:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Írj reguláris kifejezést, amely megtalálja a
'abba', 'abbba', 'abbbba'
sztringeket és csak azokat.
Adott egy sztring:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Írj reguláris kifejezést, amely megtalálja a
'aba' típusú sztringeket, amelyekben a 'b' betű
kevesebb, mint háromszor fordul elő (beleértve).
Adott egy sztring:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Írj reguláris kifejezést, amely megtalálja a
'aba' típusú sztringeket, amelyekben a 'b' betű
több, mint négyszer fordul elő (beleértve).