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<?php
  $str = '1 12 123';
  $res = preg_replace('#\d#', '!', $str);
?>

Di conseguenza, nella variabile verrà scritto quanto segue:

php'! !! !!!'

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<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\d+#', '!', $str);
?>

Di conseguenza, nella variabile verrà scritto quanto segue:

php'! ! ! 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<?php
  $str = '123abc3@@';
  $res = preg_replace('#\D+#', '!', $str);
?>

Di conseguenza, nella variabile verrà scritto quanto segue:

php'123!3!'

Esempio

In questo esempio il modello di ricerca è il seguente: carattere di spaziatura una volta:

php<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\s#', '!', $str);
?>

Di conseguenza, nella variabile verrà scritto quanto segue:

php'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<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\S+#', '!', $str);
?>

Di conseguenza, nella variabile verrà scritto quanto segue:

php'! ! ! ! !'

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<?php
  $str = '1 12 123a Abc @@@';
  $res = preg_replace('#\w+#', '!', $str);
?>

Di conseguenza, nella variabile verrà scritto quanto segue:

php'! ! ! ! @@@'

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:

php$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);

Di conseguenza, nella variabile verrà scritto quanto segue:

php'1!12!123!Abc!'

Problemi pratici

Задание 1

Data la stringa:

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

Задание 2

Data la stringa:

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

Задание 3

Data la stringa:

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

Задание 4

Data la stringa:

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

Задание 5

Data la stringa:

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

Задание 6

Data la stringa:

php<?php
  $str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>

Scrivi un'espressione regolare che sostituisca tutti gli spazi con '!'.