Multiriga nelle espressioni regolari JavaScript

Le espressioni regolari quando lavorano con stringhe multiriga hanno le loro peculiarità. Analizziamole con l'esempio della seguente stringa, che contiene caratteri ordinari, caratteri di nuova riga e tabulazioni:

javascriptlet str = `111
  222
  333
  444`;

Nuova riga

I caratteri di nuova riga possono essere catturati con il comando '\n':

javascriptlet res = str.replace(/\n/g, '!');

Di conseguenza, nella variabile verrà scritto quanto segue (gli spazi tra le righe sono tabulazioni):

javascript`111!  222!  333!  444`;

Tabulazione

I caratteri di tabulazione possono essere catturati con il comando '\t':

javascriptlet res = str.replace(/\t/g, '!');

Di conseguenza, nella variabile verrà scritto quanto segue:

javascript`
                111
                !222
                !333
                !444
            `;

Comportamento del punto

Il comando '.' per una stringa multiriga non cattura i caratteri di nuova riga:

javascriptlet res = str.replace(/./g, '!');

Di conseguenza, nella variabile verrà scritto quanto segue:

javascript`
                !!!
                !!!!
                !!!!
                !!!!
            `;

Qualsiasi carattere

Per catturare tutti i caratteri in una stringa multiriga, si usa un trucco sotto forma di combinazione [\s\S]. Questa costruzione troverà tutti i caratteri ordinari e tutti i caratteri di nuova riga:

javascriptlet res = str.replace(/[\s\S]/g, '!');

Di conseguenza, nella variabile verrà scritto quanto segue:

javascript`!!!!!!!!!!!!!!!!!!`;

Accento circonflesso (^)

Con il modificatore 'm' è possibile attivare la modalità multiriga. In questo caso, l'accento circonflesso catturerà l'inizio di ogni riga:

javascriptlet res = str.replace(/^/gm, '!');

Di conseguenza, nella variabile verrà scritto quanto segue:

javascript`
                !111
                !222
                !333
                !444
            `;

Dollaro ($)

Il comando '$' in modalità multiriga catturerà la fine di ogni riga:

javascriptlet res = str.replace(/$/gm, '!');

Di conseguenza, nella variabile verrà scritto quanto segue:

javascript`
                111!
  222!
  333!
  444!
            `;

Problemi pratici

Задание 1

Data la stringa:

javascript`
  abc
  def
  ghi
  jkl
`;

Scrivi un'espressione regolare che trasformerà questa stringa nella seguente:

javascript`
  abc!
  def!
  ghi!
  jkl!
`;
Задание 2

Data la stringa:

javascript`
  abc
  def
  ghi
  jkl
`;

Scrivi un'espressione regolare che trasformerà questa stringa nella seguente:

javascript`
!  abc
!  def
!  ghi
!  jkl
`;
Задание 3

Data la stringa:

javascript`
  abc
  def
  ghi
  jkl
`;

Scrivi un'espressione regolare che trasformerà questa stringa nella seguente:

javascript`!
  abc
  def
  ghi
  jkl
!`;
Задание 4

Data la stringa:

javascript`
  abc
  def
  ghi
  jkl
`;

Scrivi un'espressione regolare che trasformerà questa stringa nella seguente:

javascript`!
!  abc
!  def
!  ghi
!  jkl
!`;
Задание 5

Data la stringa:

javascript`
  abc
  def
  ghi
  jkl
`;

Scrivi un'espressione regolare che trasformerà questa stringa nella seguente:

javascript`!
  abc!
  def!
  ghi!
  jkl!
!`;
Задание 6

Data la stringa:

javascript`
  abc
  def
  ghi
  jkl
`;

Scrivi un'espressione regolare che trasformerà questa stringa nella seguente:

javascript`
                    !abc
                    !def
                    !ghi
                    !jkl
`;