Teckenupprepningsoperatorer i reguljära uttryck
Det finns situationer då vi vill ange
att ett tecken upprepas ett visst antal
gånger. Om vi vet det exakta antalet repetitioner,
kan vi helt enkelt skriva det flera gånger
- #aaaa#. Men vad gör vi om vi vill
säga så här: upprepa en eller fler
gånger?
För detta finns operatorer (kvantifierare)
för upprepning: plus + (en eller fler gånger),
asterisk * (noll eller fler gånger) och
frågetecken ? (noll eller en gång). Dessa
operatorer verkar på det tecken som
står före dem.
Låt oss titta på hur dessa operatorer fungerar med exempel.
Exempel
Låt oss hitta alla delsträngar enligt mönstret bokstaven
'x', bokstaven 'a' en eller fler
gånger, bokstaven 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas in i variabeln:
'xx ! ! ! xbx'
Exempel
Låt oss hitta alla delsträngar enligt mönstret bokstaven
'x', bokstaven 'a' noll eller fler
gånger, bokstaven 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas in i variabeln:
'! ! ! ! xbx'
Exempel
Låt oss hitta alla delsträngar enligt mönstret bokstaven
'x', bokstaven 'a' noll eller en
gång, bokstaven 'x':
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas in i variabeln:
'! ! xaax xbx'
Praktiska uppgifter
Given en sträng:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Skriv ett reguljärt uttryck som hittar strängar
enligt mönstret: bokstaven 'a', bokstaven 'b'
en eller fler gånger, bokstaven 'a'.
Given en sträng:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Skriv ett reguljärt uttryck som hittar strängar
enligt mönstret: bokstaven 'a', bokstaven 'b'
noll eller fler gånger, bokstaven 'a'.
Given en sträng:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Skriv ett reguljärt uttryck som hittar strängar
enligt mönstret: bokstaven 'a', bokstaven 'b'
en gång eller ingång, bokstaven 'a'.
Given en sträng:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Skriv ett reguljärt uttryck som hittar strängarna
'aa', 'aba', 'abba',
'abbba', utan att fånga 'abca'
och 'abea'.