You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 9-regular-expressions/10-regexp-greedy-and-lazy/article.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -35,14 +35,14 @@ Questo fenomeno può essere descritto così: "l'avidità è la causa di tutti i
35
35
Per trovare un riscontro, l'interprete dell'espressione regolare usa il seguente algoritmo:
36
36
37
37
- Per ogni posizione nella stringa
38
-
-Prova a trovare un riscontro del pattern in quella posizione.
38
+
-Cerca un riscontro del pattern in quella posizione.
39
39
- Se non c'è un riscontro, passa alla posizione successiva.
40
40
41
41
Questa procedura generica non ci spiega con evidenza perché l'espressione regolare fallisca, quindi approfondiamo come funziona la ricerca per il pattern `pattern:".+"`.
42
42
43
43
1. Il primo carattere del pattern è un doppio apice `pattern:"`.
44
44
45
-
L'interprete dell'espressione regolare prova a trovarlo nella posizione zero della stringa `subject:a "witch" and her "broom" is one`, ma in quel punto trova `subject:a`, pertanto non c'è immediata corrispondenza.
45
+
L'interprete dell'espressione regolare lo cerca alla posizione zero della stringa `subject:a "witch" and her "broom" is one`, ma in quel punto trova `subject:a`, pertanto non c'è immediata corrispondenza.
46
46
47
47
Quindi procede: passa alle successive posizioni nella stringa sorgente e prova a trovare lì il primo carattere del pattern, prima fallisce nuovamente, e poi trova finalmente il doppio apice nella terza posizione:
I moderni motori delle regexp possono ottimizzare internamente i loro algoritmi per essere più rapidi. Potrebbero quindi operare in modo leggermente diverso da quanto abbiamo spiegato prima.
165
165
166
-
Ma per comprendere come funzionino le espressioni regolari e come implementarle non abbiamo bisogno di conoscere questi dettagli. Si tratta di meccanismi interni per ottimizzare il rendimento.
166
+
Ma per comprendere come funzionino le espressioni regolari e come implementarle non abbiamo bisogno di conoscere questi dettagli. Si tratta di meccanismi interni per ottimizzarne il rendimento.
167
167
168
168
Del resto è difficile ottimizzare le espressioni regolari complesse, pertanto la ricerca potrebbe anche funzionare esattamente come indicato.
169
169
```
170
170
171
171
## Un approccio alternativo
172
172
173
-
Con le espressioni regolari, spesso c'è più di un modo di ottenere lo stesso risultato.
173
+
Con le espressioni regolari, spesso abbiamo a disposizione diversi modi di ottenere lo stesso risultato.
174
174
175
175
Nel nostro caso potremmo trovare le stringhe tra doppi apici senza la modalità lazy, usando la regexp `pattern:"[^"]+"`:
176
176
@@ -182,7 +182,7 @@ let str = 'a "witch" and her "broom" is one';
182
182
alert( str.match(regexp) ); // "witch", "broom"
183
183
```
184
184
185
-
La regexp `pattern:"[^"]+"`dà il risultato corretto, perché cerca un doppio apice `pattern:'"'`, seguito da uno o più caratteri che non siano doppi apici `pattern:[^"]` e successivamente un doppio apice di chiusura.
185
+
La regexp `pattern:"[^"]+"`restituisce il risultato corretto, perché cerca un doppio apice `pattern:'"'`, seguito da uno o più caratteri che non siano doppi apici `pattern:[^"]` e successivamente un doppio apice di chiusura.
186
186
187
187
Quando l'interprete della regexp cerca `pattern:[^"]+` si arresta quando incontra il doppio apice di chiusura e termina il suo lavoro.
188
188
@@ -236,7 +236,7 @@ let regexp = /<a href=".*?" class="doc">/g;
0 commit comments