Operatori di ripetizione dei caratteri nelle espressioni regolari
Ci sono situazioni in cui vogliamo indicare
che un carattere si ripete un determinato numero
di volte. Se conosciamo il numero esatto di ripetizioni,
possiamo semplicemente scriverlo più volte
- #aaaa#. Ma cosa fare se vogliamo
dire qualcosa come: ripeti una o più
volte?
Per questo esistono gli operatori (quantificatori)
di ripetizione: il più + (una o più volte),
l'asterisco * (zero o più volte) e
il punto interrogativo ? (zero o una volta). Questi
operatori agiscono sul carattere che
li precede.
Osserviamo il funzionamento di questi operatori con degli esempi.
Esempio
Troviamo tutte le sottostringhe secondo il modello lettera
'x', lettera 'a' una o più
volte, lettera 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
Di conseguenza, nella variabile verrà memorizzato quanto segue:
'xx ! ! ! xbx'
Esempio
Troviamo tutte le sottostringhe secondo il modello lettera
'x', lettera 'a' zero o più
volte, lettera 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
Di conseguenza, nella variabile verrà memorizzato quanto segue:
'! ! ! ! xbx'
Esempio
Troviamo tutte le sottostringhe secondo il modello lettera
'x', lettera 'a' zero o una
volta, lettera 'x':
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
Di conseguenza, nella variabile verrà memorizzato quanto segue:
'! ! xaax xbx'
Problemi pratici
Data la stringa:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Scrivi un'espressione regolare che trovi le stringhe
secondo il modello: lettera 'a', lettera 'b'
una o più volte, lettera 'a'.
Data la stringa:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Scrivi un'espressione regolare che trovi le stringhe
secondo il modello: lettera 'a', lettera 'b'
zero o più volte, lettera 'a'.
Data la stringa:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Scrivi un'espressione regolare che trovi le stringhe
secondo il modello: lettera 'a', lettera 'b'
una volta o nessuna, lettera 'a'.
Data la stringa:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Scrivi un'espressione regolare che trovi le stringhe
'aa', 'aba', 'abba',
'abbba', senza catturare 'abca'
e 'abea'.