Klammerparenteser i reguljära uttryck i PHP
Operatorerna +, *, ? är bra,
men med dem kan man inte ange ett specifikt
antal upprepningar. I det här fallet kommer operatorn {}
att vara till hjälp.
Den fungerar på följande sätt: {5}
- fem upprepningar, {2,5} - upprepas
två till fem gånger (båda inkluderade), {2,}
- upprepas två eller fler gånger.
Exempel
I detta exempel ser sökmönstret ut så här:
bokstaven 'x', bokstaven 'a' en
eller två gånger, bokstaven 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas in i variabeln:
'xx ! ! xaaax'
Exempel
I detta exempel ser sökmönstret ut så här:
bokstaven 'x', bokstaven 'a' två
gånger eller fler, bokstaven 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas in i variabeln:
'xx xax ! !'
Exempel
I detta exempel ser sökmönstret ut så här:
bokstaven 'x', bokstaven 'a' tre
gånger, bokstaven 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas in i variabeln:
'xx xax xaax !'
Exempel
I detta exempel ser sökmönstret ut så här:
bokstaven 'a' tio gånger:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
Som ett resultat kommer följande att skrivas in i variabeln:
'aaa ! aaa'
Exempel
I detta exempel ville författaren av koden ha detta mönster:
bokstaven 'x', bokstaven 'a' tre
gånger eller färre, bokstaven 'x',
men tyvärr fungerar inte sådant - {,3} -.
Det måste anges explicit:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas in i variabeln:
'xx ! ! !'
Exempel
Noll är också tillåtet:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas in i variabeln:
'! ! ! !'
Praktiska uppgifter
Given en sträng:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Skriv ett reguljärt uttryck som hittar strängarna
'abba', 'abbba', 'abbbba'
och endast dessa.
Given en sträng:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Skriv ett reguljärt uttryck som hittar strängar
av typen 'aba', där 'b' förekommer
färre än tre gånger (inklusive).
Given en sträng:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Skriv ett reguljärt uttryck som hittar strängar
av typen 'aba', där 'b' förekommer
mer än fyra gånger (inklusive).