Krøllede parenteser i regulære udtryk i PHP
Operatørerne +, *, ? er gode,
men med dem kan man ikke angive et specifikt
antal gentagelser. I dette tilfælde vil operatoren {}
komme til undsætning.
Den fungerer som følger: {5}
- fem gentagelser, {2,5} - gentages
fra to til fem (begge inklusive), {2,}
- gentages to eller flere gange.
Eksempel
I dette eksempel ser søgemønstret sådan ud:
bogstavet 'x', bogstavet 'a' et
eller to gange, bogstavet 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
Resultatet bliver følgende i variablen:
'xx ! ! xaaax'
Eksempel
I dette eksempel ser søgemønstret sådan ud:
bogstavet 'x', bogstavet 'a' to
gange eller derover, bogstavet 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
Resultatet bliver følgende i variablen:
'xx xax ! !'
Eksempel
I dette eksempel ser søgemønstret sådan ud:
bogstavet 'x', bogstavet 'a' tre
gange, bogstavet 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
Resultatet bliver følgende i variablen:
'xx xax xaax !'
Eksempel
I dette eksempel ser søgemønstret sådan ud:
bogstavet 'a' ti gange:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
Resultatet bliver følgende i variablen:
'aaa ! aaa'
Eksempel
I dette eksempel ønskede kodeforfatteren dette mønster:
bogstavet 'x', bogstavet 'a' tre
gange eller derunder, bogstavet 'x',
men desværre virker dette - {,3} -
ikke. Det skal angives eksplicit:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
Resultatet bliver følgende i variablen:
'xx ! ! !'
Eksempel
Nul er også tilladt:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
Resultatet bliver følgende i variablen:
'! ! ! !'
Praktiske opgaver
Givet en streng:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Skriv et regulært udtryk, der finder strengene
'abba', 'abbba', 'abbbba'
og kun dem.
Givet en streng:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Skriv et regulært udtryk, der finder strengene
af typen 'aba', hvor 'b' forekommer
mindre end tre gange (inklusive).
Givet en streng:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Skriv et regulært udtryk, der finder strengene
af typen 'aba', hvor 'b' forekommer
mere end fire gange (inklusive).