Riferimenti posteriori nel modello delle espressioni regolari in JavaScript

Il contenuto dei gruppi di cattura è accessibile non solo nella stringa di sostituzione, ma anche all'interno del modello dell'espressione regolare: noi possiamo mettere qualcosa in un gruppo, e poi dire direttamente nell'espressione regolare che qui deve essere presente il contenuto di quel gruppo.

Il contenuto dei gruppi di cattura è accessibile tramite i loro numeri, preceduti da una barra rovesciata. Per esempio, il primo gruppo sarà accessibile in questo modo: \1, il secondo gruppo in questo modo - \2, il terzo - \3 e così via.

Sono sicuro che tutto quanto scritto sopra sia ancora piuttosto oscuro per voi. Non è sorprendente, dato che i gruppi di cattura sono l'argomento più difficile da capire delle espressioni regolari. Analizziamo con degli esempi.

Esempio

Supponiamo di avere una stringa come questa:

javascriptlet str = 'aa bb cd ef';

Troviamo tutti i punti in cui ci sono due lettere qualsiasi uguali consecutive. Per risolvere il problema, cercheremo qualsiasi lettera, la metteremo in un gruppo di cattura, e poi controlleremo se il carattere successivo è il contenuto di quel gruppo:

javascriptlet res = str.replace(/([a-z])\1/g, '!');

Di conseguenza, nella variabile verrà memorizzato quanto segue:

javascript'! ! cd ef'

Esempio

Supponiamo di avere una stringa come questa:

javascriptlet str = 'asxca buzxb csgd';

Troviamo tutte le parole in cui la prima e l'ultima lettera sono uguali. Per risolvere il problema, scriveremo il seguente modello: una lettera, poi una o più lettere, e poi la stessa lettera della prima:

javascriptlet res = str.replace(/([a-z])[a-z]+\1/g, '!');

Di conseguenza, nella variabile verrà memorizzato quanto segue:

javascript'! ! csgd'

Problemi pratici

Задание 1

Data la stringa:

javascriptlet str = 'aaa bbb ccc xyz';

Trova tutte le sottostringhe in cui ci sono tre lettere uguali consecutive.

Задание 2

Data la stringa:

javascriptlet str = 'a aa aaa aaaa aaaaa';

Trova tutte le sottostringhe in cui ci sono due o più lettere uguali consecutive.

Задание 3

Data la stringa:

javascriptlet str = 'aaa aaa bbb bbb ccc ddd';

Trova tutte le sottostringhe in cui ci sono due parole uguali consecutive.