Krøllete parenteser i regulære uttrykk i PHP

Operatorene +, *, ? er gode, men med dem kan man ikke spesifisere et eksakt antall repetisjoner. I dette tilfellet vil operatoren {} komme til unnsetning.

Den fungerer som følger: {5} - fem repetisjoner, {2,5} - repeteres fra to til fem (begge inkludert), {2,} - repeteres to eller flere ganger.

Eksempel

I dette eksemplet ser søkemønsteret slik ut: bokstaven 'x', bokstaven 'a' en eller to ganger, bokstaven 'x':

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{1,2}x#', '!', $str);
?>

Som et resultat vil følgende bli skrevet inn i variabelen:

php'xx ! ! xaaax'

Eksempel

I dette eksemplet ser søkemønsteret slik ut: bokstaven 'x', bokstaven 'a' to ganger eller mer, bokstaven 'x':

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{2,}x#', '!', $str);
?>

Som et resultat vil følgende bli skrevet inn i variabelen:

php'xx xax ! !'

Eksempel

I dette eksemplet ser søkemønsteret slik ut: bokstaven 'x', bokstaven 'a' tre ganger, bokstaven 'x':

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{3}x#', '!', $str);
?>

Som et resultat vil følgende bli skrevet inn i variabelen:

php'xx xax xaax !'

Eksempel

I dette eksemplet ser søkemønsteret slik ut: bokstaven 'a' ti ganger:

php<?php
  $str = 'aaa aaaaaaaaaa aaa';
  $res = preg_replace('#a{10}#', '!', $str);
?>

Som et resultat vil følgende bli skrevet inn i variabelen:

php'aaa ! aaa'

Eksempel

I dette eksemplet ønsket forfatteren av koden et slikt mønster: bokstaven 'x', bokstaven 'a' tre ganger eller mindre, bokstaven 'x', men dessverre fungerer ikke dette - {,3} -. Man må spesifisere eksplisitt:

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{1,3}x#', '!', $str);
?>

Som et resultat vil følgende bli skrevet inn i variabelen:

php'xx ! ! !'

Eksempel

Null er også tillatt:

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{0,3}x#', '!', $str);
?>

Som et resultat vil følgende bli skrevet inn i variabelen:

php'! ! ! !'

Praktiske oppgaver

Задание 1

Gitt en streng:

php<?php
  $str = 'aa aba abba abbba abbbba abbbbba';
?>

Skriv et regulært uttrykk som vil finne strengene 'abba', 'abbba', 'abbbba' og bare dem.

Задание 2

Gitt en streng:

php<?php
  $str = 'aa aba abba abbba abbbba abbbbba';
?>

Skriv et regulært uttrykk som vil finne strenger av typen 'aba', der 'b' forekommer mindre enn tre ganger (inkludert).

Задание 3

Gitt en streng:

php<?php
  $str = 'aa aba abba abbba abbbba abbbbba';
?>

Skriv et regulært uttrykk som vil finne strenger av typen 'aba', der 'b' forekommer mer enn fire ganger (inkludert).