Il comando 'o' nelle espressioni regolari di PHP
In questa lezione analizzeremo il comando
|, che rappresenta una versione più
potente di O rispetto al
comando []. Questo comando permette
di dividere l'espressione regolare in più parti.
In questo caso, la corrispondenza può rientrare in una
parte dell'espressione regolare o in un'altra. Vediamo
con degli esempi.
Esempio
In questo esempio il modello di ricerca è: tre
lettere 'a' o tre lettere 'b':
<?php
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
Di conseguenza, nella variabile verrà memorizzato quanto segue:
'! ! abb'
Esempio
In questo esempio il modello di ricerca è: tre
lettere 'a' o da 1 a più
lettere 'b':
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
Di conseguenza, nella variabile verrà memorizzato quanto segue:
'! ! ! ! axx'
Esempio
In questo esempio il modello di ricerca è: una o più lettere o tre cifre:
<?php
$str = 'a ab abc 1 12 123';
$res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>
Di conseguenza, nella variabile verrà memorizzato quanto segue:
'! ! ! 1 12 !'
Esempio
Il carattere verticale può dividere l'espressione regolare non in due parti, ma in un numero qualsiasi di parti:
<?php
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
Di conseguenza, nella variabile verrà memorizzato quanto segue:
'! ! ! ddd'
Esempio
Se il carattere verticale si trova all'interno di parentesi
tonde, allora 'o' funziona solo all'interno
di queste parentesi. Ad esempio, cerchiamo le stringhe
secondo il seguente modello: all'inizio c'è
o 'a', o 'b' una o più
volte, e poi due lettere 'x':
<?php
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
Di conseguenza, nella variabile verrà memorizzato quanto segue:
'! ! ! exx'
Problemi pratici
Data una stringa:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Scrivi un'espressione regolare che trovi le stringhe
secondo il modello: ai lati ci sono le lettere 'a',
e tra di loro - o la lettera 'e' un numero qualsiasi
di volte o la lettera 'x' un numero qualsiasi
di volte.
Data una stringa:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Scrivi un'espressione regolare che trovi le stringhe
secondo il modello: ai lati ci sono le lettere 'a',
e tra di loro - o la lettera 'e' due volte
o la lettera 'x' un numero qualsiasi di volte.