Tegn-gentagelsesoperatorer i regulære udtryk
Der opstår situationer, hvor vi ønsker at angive,
at et tegn gentages et bestemt antal gange.
Hvis vi kender det præcise antal gentagelser,
kan vi blot skrive det flere gange
- #aaaa#. Men hvad gør vi, hvis vi vil
sige sådan her: gentag en eller flere
gange?
Til dette eksisterer der operatorer kaldet (kvantifikatorer)
for gentagelse: plus + (en eller flere gange),
stjerne * (nul eller flere gange) og
spørgsmålstegn ? (nul eller én gang). Disse
operatorer virker på det tegn, som
står foran dem.
Lad os se på arbejdet med disse operatorer med eksempler.
Eksempel
Lad os finde alle delstrenge efter mønsteret bogstav
'x', bogstav 'a' en eller flere
gange, bogstav 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
Som resultat vil følgende blive skrevet i variablen:
'xx ! ! ! xbx'
Eksempel
Lad os finde alle delstrenge efter mønsteret bogstav
'x', bogstav 'a' nul eller flere
gange, bogstav 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
Som resultat vil følgende blive skrevet i variablen:
'! ! ! ! xbx'
Eksempel
Lad os finde alle delstrenge efter mønsteret bogstav
'x', bogstav 'a' nul eller én
gang, bogstav 'x':
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
Som resultat vil følgende blive skrevet i variablen:
'! ! xaax xbx'
Praktiske opgaver
Givet en streng:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Skriv et regulært udtryk, der finder strenge
efter mønsteret: bogstav 'a', bogstav 'b'
en eller flere gange, bogstav 'a'.
Givet en streng:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Skriv et regulært udtryk, der finder strenge
efter mønsteret: bogstav 'a', bogstav 'b'
nul eller flere gange, bogstav 'a'.
Givet en streng:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Skriv et regulært udtryk, der finder strenge
efter mønsteret: bogstav 'a', bogstav 'b'
én gang eller ingen gange, bogstav 'a'.
Givet en streng:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Skriv et regulært udtryk, der finder strengene
'aa', 'aba', 'abba',
'abbba', uden at fange 'abca'
og 'abea'.