Krøllede parenteser i regulære udtryk i PHP

Operatørerne +, *, ? er gode, men med dem kan man ikke angive et specifikt antal gentagelser. I dette tilfælde vil operatoren {} komme til undsætning.

Den fungerer som følger: {5} - fem gentagelser, {2,5} - gentages fra to til fem (begge inklusive), {2,} - gentages to eller flere gange.

Eksempel

I dette eksempel ser søgemønstret sådan ud: bogstavet 'x', bogstavet 'a' et eller to gange, bogstavet 'x':

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

Resultatet bliver følgende i variablen:

php'xx ! ! xaaax'

Eksempel

I dette eksempel ser søgemønstret sådan ud: bogstavet 'x', bogstavet 'a' to gange eller derover, bogstavet 'x':

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

Resultatet bliver følgende i variablen:

php'xx xax ! !'

Eksempel

I dette eksempel ser søgemønstret sådan ud: bogstavet 'x', bogstavet 'a' tre gange, bogstavet 'x':

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

Resultatet bliver følgende i variablen:

php'xx xax xaax !'

Eksempel

I dette eksempel ser søgemønstret sådan ud: bogstavet 'a' ti gange:

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

Resultatet bliver følgende i variablen:

php'aaa ! aaa'

Eksempel

I dette eksempel ønskede kodeforfatteren dette mønster: bogstavet 'x', bogstavet 'a' tre gange eller derunder, bogstavet 'x', men desværre virker dette - {,3} - ikke. Det skal angives eksplicit:

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

Resultatet bliver følgende i variablen:

php'xx ! ! !'

Eksempel

Nul er også tilladt:

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

Resultatet bliver følgende i variablen:

php'! ! ! !'

Praktiske opgaver

Задание 1

Givet en streng:

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

Skriv et regulært udtryk, der finder strengene 'abba', 'abbba', 'abbbba' og kun dem.

Задание 2

Givet en streng:

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

Skriv et regulært udtryk, der finder strengene af typen 'aba', hvor 'b' forekommer mindre end tre gange (inklusive).

Задание 3

Givet en streng:

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

Skriv et regulært udtryk, der finder strengene af typen 'aba', hvor 'b' forekommer mere end fire gange (inklusive).