Set di caratteri nelle espressioni regolari PHP
I gruppi di caratteri \d e \w non sono
molto flessibili. Anche un compito semplice come
trovare tutte le lettere, ma non i numeri -
non può essere risolto con essi. Per tali compiti
si dovrebbero usare le parentesi quadre, che rappresentano
l'operazione OR.
Le parentesi quadre sostituiscono un carattere,
qualsiasi di quelli elencati all'interno. Ad esempio,
così: #x[abc]x# - stiamo dicendo che
ai bordi devono esserci le lettere x, e all'interno
- un carattere: o 'a', o 'b',
o 'c'.
Dopo le parentesi quadre si possono scrivere operatori
di ripetizione. Ad esempio, così: #x[abc]+x#
- stiamo dicendo che all'interno delle x può esserci
qualsiasi quantità di caratteri 'a', 'b'
e 'c' - in qualsiasi combinazione.
Si possono non solo elencare i caratteri, ma creare
gruppi di caratteri, scrivendo tra due caratteri
un trattino. Ad esempio, così: #[a-d]#
- otteniamo tutti i caratteri da 'a' a
'd'.
Vediamo degli esempi.
Esempio
In questo esempio il modello di ricerca è il seguente:
tra le x qualsiasi lettera da 'a'
a 'z':
<?php
$str = 'xax xbx xcx x@x';
$res = preg_replace('#x[a-z]x#', '!', $str);
?>
Di conseguenza nella variabile verrà scritto quanto segue:
'! ! ! x@x'
Esempio
In questo esempio il modello di ricerca è il seguente:
tra le x qualsiasi lettera da 'a'
a 'k':
<?php
$str = 'xax xbx xmx x@x';
$res = preg_replace('#x[a-k]x#', '!', $str);
?>
Di conseguenza nella variabile verrà scritto quanto segue:
'! ! xmx x@x'
Esempio
In questo esempio il modello di ricerca è il seguente:
tra le x qualsiasi lettera da 'A'
a 'Z':
<?php
$str = 'xax xBx xcx x@x';
$res = preg_replace('#x[A-Z]x#', '!', $str);
?>
Di conseguenza nella variabile verrà scritto quanto segue:
'xax ! xcx x@x'
Esempio
In questo esempio il modello di ricerca è il seguente:
tra le x qualsiasi cifra da 0 a 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[0-9]x#', '!', $str);
?>
Di conseguenza nella variabile verrà scritto quanto segue:
'xax ! ! ! x@x'
Esempio
In questo esempio il modello di ricerca è il seguente:
tra le x qualsiasi cifra da 3 a 7:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[3-7]x#', '!', $str);
?>
Di conseguenza nella variabile verrà scritto quanto segue:
'xax x1x ! ! x@x'
Esempio
In questo esempio il modello di ricerca è il seguente:
tra le x qualsiasi lettera da 'a'
a 'z' o cifra da 1 a 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>
Di conseguenza nella variabile verrà scritto quanto segue:
'! ! ! ! x@x'
Esempio
In questo esempio il modello di ricerca è il seguente:
tra le x qualsiasi lettera da 'a'
a 'z' o lettera da 'A' a
'Z':
<?php
$str = 'xax xBx xcx x5x x@x';
$res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>
Di conseguenza nella variabile verrà scritto quanto segue:
'! ! ! x5x x@x'
Esempio
In questo esempio il modello di ricerca è il seguente:
tra le x qualsiasi lettera da 'a'
a 'z' o le cifre 1, 2:
<?php
$str = 'xax xbx x1x x2x x3x';
$res = preg_replace('#x[a-z12]x#', '!', $str);
?>
Di conseguenza nella variabile verrà scritto quanto segue:
'! ! ! ! x3x'
Esempio
In questo esempio il modello di ricerca è il seguente:
tra le x lettere da 'a' a 'z'
in quantità da 1 e più:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]+x#', '!', $str);
?>
Di conseguenza nella variabile verrà scritto quanto segue:
'xx ! ! ! x123x xa3x'
Esempio
Facciamo in modo che la quantità di lettere possa essere anche zero:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]*x#', '!', $str);
?>
Di conseguenza nella variabile verrà scritto quanto segue:
'! ! ! x123x xa3x'
Compiti pratici
Data la stringa:
<?php
$str = 'aba aea aca aza axa';
?>
Scrivi un'espressione regolare che trovi secondo il seguente
modello: ai bordi ci sono le lettere 'a',
e tra di esse - la lettera 'b', 'e'
o 'x'.
Data la stringa:
<?php
$str = 'a1a a3a a7a a9a aba';
?>
Scrivi un'espressione regolare che trovi secondo il seguente
modello: ai bordi ci sono le lettere 'a',
e tra di esse - una cifra da 3 a 6.
Data la stringa:
<?php
$str = 'aba aea afa aha aga';
?>
Scrivi un'espressione regolare che trovi secondo il seguente
modello: ai bordi ci sono le lettere 'a',
e tra di esse - una lettera da a a g.
Data la stringa:
<?php
$str = 'aba aea afa aha aga';
?>
Scrivi un'espressione regolare che trovi secondo il seguente
modello: ai bordi ci sono le lettere 'a',
e tra di esse - una lettera da a a f e da j a z.
Data la stringa:
<?php
$str = 'aAa aea aEa aJa a3a';
?>
Scrivi un'espressione regolare che trovi secondo il seguente
modello: ai bordi ci sono le lettere 'a',
e tra di esse - una lettera da a a f e da A a D.
Data la stringa:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Scrivi un'espressione regolare che trovi secondo il seguente
modello: ai bordi ci sono le lettere 'a',
e tra di esse - lettere latine minuscole,
senza intaccare le altre.
Data la stringa:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Scrivi un'espressione regolare che trovi secondo il seguente
modello: ai bordi ci sono le lettere 'a',
e tra di esse - lettere latine minuscole e maiuscole, senza intaccare le altre.
Data la stringa:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Scrivi un'espressione regolare che trovi secondo il seguente
modello: ai bordi ci sono le lettere 'a',
e tra di esse - lettere latine minuscole
e cifre, senza intaccare le altre.