Tegngjentakelsesoperatorer
Det oppstår situasjoner der vi ønsker å indikere
at et tegn gjentas et spesifisert antall
ganger. Hvis vi vet nøyaktig antall repetisjoner,
kan vi ganske enkelt skrive det flere ganger
- #aaaa#. Men hva gjør vi hvis vi ønsker
å si noe slikt: gjenta en eller flere
ganger?
For dette finnes det operatorer for (kvantifisering)
av repetisjon: plusstegn + (en eller flere ganger),
stjerne * (null eller flere ganger) og
spørsmålstegn ? (null eller én gang). Disse
operatorene virker på tegnet som står foran dem.
La oss se på hvordan disse operatorene fungerer med eksempler.
Eksempel
La oss finne alle delstrenger som følger mønsteret bokstav
'x', bokstav 'a' en eller flere
ganger, bokstav 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
Resultatet som lagres i variabelen blir som følger:
'xx ! ! ! xbx'
Eksempel
La oss finne alle delstrenger som følger mønsteret bokstav
'x', bokstav 'a' null eller flere
ganger, bokstav 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
Resultatet som lagres i variabelen blir som følger:
'! ! ! ! xbx'
Eksempel
La oss finne alle delstrenger som følger mønsteret bokstav
'x', bokstav 'a' null eller én
gang, bokstav 'x':
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
Resultatet som lagres i variabelen blir som følger:
'! ! xaax xbx'
Praktiske oppgaver
Gitt en streng:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Skriv et regulært uttrykk som finner strenger
som følger mønsteret: bokstav 'a', bokstav 'b'
en eller flere ganger, bokstav 'a'.
Gitt en streng:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Skriv et regulært uttrykk som finner strenger
som følger mønsteret: bokstav 'a', bokstav 'b'
null eller flere ganger, bokstav 'a'.
Gitt en streng:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Skriv et regulært uttrykk som finner strenger
som følger mønsteret: bokstav 'a', bokstav 'b'
en gang eller ingen ganger, bokstav 'a'.
Gitt en streng:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Skriv et regulært uttrykk som finner strengene
'aa', 'aba', 'abba',
'abbba', uten å fange 'abca'
og 'abea'.