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
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
Di conseguenza, nella variabile verrà scritto quanto segue:
'xx ! ! xaaax'
Esempio
In questo esempio il modello di ricerca è il seguente:
lettera 'x', lettera 'a' due
volte o più, lettera 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
Di conseguenza, nella variabile verrà scritto quanto segue:
'xx xax ! !'
Esempio
In questo esempio il modello di ricerca è il seguente:
lettera 'x', lettera 'a' tre
volte, lettera 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
Di conseguenza, nella variabile verrà scritto quanto segue:
'xx xax xaax !'
Esempio
In questo esempio il modello di ricerca è il seguente:
lettera 'a' dieci volte:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
Di conseguenza, nella variabile verrà scritto quanto segue:
'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
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
Di conseguenza, nella variabile verrà scritto quanto segue:
'xx ! ! !'
Esempio
Anche zero è consentito:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
Di conseguenza, nella variabile verrà scritto quanto segue:
'! ! ! !'
Problemi pratici
Data la stringa:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Scrivi un'espressione regolare che trovi le stringhe
'abba', 'abbba', 'abbbba'
e solo quelle.
Data la stringa:
<?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).
Data la stringa:
<?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).