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<?php
  $str = 'aaa bbb abb';
  $res = preg_replace('#a{3}|b{3}#', '!', $str);
?>

Di conseguenza, nella variabile verrà memorizzato quanto segue:

php'! ! abb'

Esempio

In questo esempio il modello di ricerca è: tre lettere 'a' o da 1 a più lettere 'b':

php<?php
  $str = 'aaa bbb bbbb bbbbb axx';
  $res = preg_replace('#a{3}|b+#', '!', $str);
?>

Di conseguenza, nella variabile verrà memorizzato quanto segue:

php'! ! ! ! axx'

Esempio

In questo esempio il modello di ricerca è: una o più lettere o tre cifre:

php<?php
  $str = 'a ab abc 1 12 123';
  $res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>

Di conseguenza, nella variabile verrà memorizzato quanto segue:

php'! ! ! 1 12 !'

Esempio

Il carattere verticale può dividere l'espressione regolare non in due parti, ma in un numero qualsiasi di parti:

php<?php
  $str = 'aaa bbb ccc ddd';
  $res = preg_replace('#a+|b+|c+#', '!', $str);
?>

Di conseguenza, nella variabile verrà memorizzato quanto segue:

php'! ! ! 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<?php
  $str = 'axx bxx bbxx exx';
  $res = preg_replace('#(a|b+)xx#', '!', $str);
?>

Di conseguenza, nella variabile verrà memorizzato quanto segue:

php'! ! ! exx'

Problemi pratici

Задание 1

Data una stringa:

php<?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.

Задание 2

Data una stringa:

php<?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.