Gruppi di caratteri nelle espressioni regolari PHP
Esistono comandi speciali che consentono di
selezionare interi gruppi di caratteri contemporaneamente. Il comando
\d indica una cifra da 0 a 9.
Il comando \w indica una cifra, una lettera
latina o il carattere di sottolineatura. Il comando \s
indica uno spazio o un carattere di spaziatura:
spazio, ritorno a capo, tabulazione. È possibile
invertire il significato del comando scrivendo una lettera
maiuscola: ad esempio, se \d è una cifra,
allora \D è una non-cifra.
Esempio
Troviamo tutte le cifre:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
Di conseguenza, nella variabile verrà scritto quanto segue:
'! !! !!!'
Esempio
Gli operatori di ripetizione considerano i comandi di gruppo
come un'unica entità, quindi le parentesi raggruppanti
non sono necessarie. Nell'esempio seguente il modello di ricerca
è il seguente: cifra da 0 a 9
una o più volte:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
Di conseguenza, nella variabile verrà scritto quanto segue:
'! ! ! abc @@@'
Esempio
Nel seguente esempio il modello di ricerca è
il seguente: qualsiasi cosa una o più volte,
ma non una cifra da 0 a 9:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
Di conseguenza, nella variabile verrà scritto quanto segue:
'123!3!'
Esempio
In questo esempio il modello di ricerca è il seguente: carattere di spaziatura una volta:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
Di conseguenza, nella variabile verrà scritto quanto segue:
'1!12!123!abc!@@@'
Esempio
In questo esempio il modello di ricerca è il seguente:
carattere NON di spaziatura una o più volte.
Tutte le sottostringhe, separate da spazi, saranno sostituite
con '!':
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
Di conseguenza, nella variabile verrà scritto quanto segue:
'! ! ! ! !'
Esempio
In questo esempio il modello di ricerca è il seguente:
cifra o lettera una o più volte.
Tutte le sottostringhe composte da cifre e lettere
saranno sostituite con '!':
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
Di conseguenza, nella variabile verrà scritto quanto segue:
'! ! ! ! @@@'
Esempio
In questo esempio il modello di ricerca è il seguente:
NON cifra e NON lettera una o più volte.
In base a questa definizione, nel nostro caso rientrano
'@@@' e tutti gli spazi (anche loro infatti
non sono cifre né lettere). Si prega di notare
che alla fine c'è un '!' - in esso
è stata trasformata la stringa ' @@@' - con
uno spazio iniziale:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
Di conseguenza, nella variabile verrà scritto quanto segue:
'1!12!123!Abc!'
Problemi pratici
Data la stringa:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
Scrivi un'espressione regolare che trovi le stringhe,
in cui ai lati ci sono le lettere 'a',
e tra di esse una cifra.
Data la stringa:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
Scrivi un'espressione regolare che trovi le stringhe,
in cui ai lati ci sono le lettere 'a',
e tra di esse un numero qualsiasi di cifre.
Data la stringa:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
Scrivi un'espressione regolare che trovi le stringhe,
in cui ai lati ci sono le lettere 'a',
e tra di esse un numero qualsiasi di cifre (incluso
zero cifre, cioè la stringa 'aa').
Data la stringa:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
Scrivi un'espressione regolare che trovi le stringhe
del seguente tipo: ai lati ci sono le lettere
'a' e 'b', e tra di esse - non
un numero.
Data la stringa:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
Scrivi un'espressione regolare che trovi le stringhe
del seguente tipo: ai lati ci sono le lettere
'a' e 'b', e tra di esse - non
una lettera e non una cifra.
Data la stringa:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
Scrivi un'espressione regolare che sostituisca tutti gli spazi
con '!'.