Parentesi graffe nelle espressioni regolari PHP

Gli operatori +, *, ? sono utili, ma con essi non è possibile specificare un numero esatto di ripetizioni. In questo caso viene in tuo aiuto l'operatore {}.

Funziona nel modo seguente: {5} - cinque ripetizioni, {2,5} - si ripete da due a cinque volte (entrambi inclusi), {2,} - si ripete due o più volte.

Esempio

In questo esempio il modello di ricerca è il seguente: lettera 'x', lettera 'a' una o due volte, lettera 'x':

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

Di conseguenza, nella variabile verrà scritto quanto segue:

php'xx ! ! xaaax'

Esempio

In questo esempio il modello di ricerca è il seguente: lettera 'x', lettera 'a' due volte o più, lettera 'x':

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

Di conseguenza, nella variabile verrà scritto quanto segue:

php'xx xax ! !'

Esempio

In questo esempio il modello di ricerca è il seguente: lettera 'x', lettera 'a' tre volte, lettera 'x':

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

Di conseguenza, nella variabile verrà scritto quanto segue:

php'xx xax xaax !'

Esempio

In questo esempio il modello di ricerca è il seguente: lettera 'a' dieci volte:

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

Di conseguenza, nella variabile verrà scritto quanto segue:

php'aaa ! aaa'

Esempio

In questo esempio l'autore del codice voleva questo modello: lettera 'x', lettera 'a' tre volte o meno, lettera 'x', ma sfortunatamente questo - {,3} - non funziona. Bisogna specificare esplicitamente:

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

Di conseguenza, nella variabile verrà scritto quanto segue:

php'xx ! ! !'

Esempio

Anche zero è consentito:

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

Di conseguenza, nella variabile verrà scritto quanto segue:

php'! ! ! !'

Problemi pratici

Задание 1

Data la stringa:

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

Scrivi un'espressione regolare che trovi le stringhe 'abba', 'abbba', 'abbbba' e solo quelle.

Задание 2

Data la stringa:

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

Scrivi un'espressione regolare che trovi le stringhe del tipo 'aba', in cui 'b' appare meno di tre volte (incluso).

Задание 3

Data la stringa:

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

Scrivi un'espressione regolare che trovi le stringhe del tipo 'aba', in cui 'b' appare più di quattro volte (incluso).