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
The regular expression engine looks for alternations one-by-one. That is: first it checks if we have `match:Java`, otherwise -- looks for `match:JavaScript`and so on.
14
+
L'interprete dell'espressione regolare cerca le alternanze una per una. In altre parole: per prima cosa cerca `match:Java`, se non la trova cerca `match:JavaScript`e così via.
15
15
16
-
As a result, `match:JavaScript`can never be found, just because`match:Java`is checked first.
16
+
Il risultato è che `match:JavaScript`non trova mai corrispondenza proprio perché`match:Java`viene controllato per prima.
17
17
18
-
The same with `match:C`and`match:C++`.
18
+
Lo stesso accade con `match:C`e`match:C++`.
19
19
20
-
There are two solutions for that problem:
20
+
Ci sono due soluzioni per questo problema:
21
21
22
-
1.Change the order to check the longer match first: `pattern:JavaScript|Java|C\+\+|C|PHP`.
23
-
2.Merge variants with the same start: `pattern:Java(Script)?|C(\+\+)?|PHP`.
22
+
1.Cambiare l'ordine di verifica mettendo per primo il termine più lungo: `pattern:JavaScript|Java|C\+\+|C|PHP`.
23
+
2.Unire le varianti che cominciano allo stesso modo: `pattern:Java(Script)?|C(\+\+)?|PHP`.
Copy file name to clipboardExpand all lines: 9-regular-expressions/13-regexp-alternation/02-find-matching-bbtags/solution.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,11 @@
1
1
2
-
Opening tag is`pattern:\[(b|url|quote)\]`.
2
+
Il tag di apertura è`pattern:\[(b|url|quote)\]`.
3
3
4
-
Then to find everything till the closing tag -- let's use the pattern `pattern:.*?`with flag `pattern:s`to match any character including the newline and then add a backreference to the closing tag.
4
+
Successivamente per trovare tutto fino al tag di chiusura usiamo il pattern `pattern:.*?`con il flag `pattern:s`per cercare la corrispondenza con ogni carattere inclusa una nuova riga. Per concludere aggiungiamo un riferimento all'indietro per il tag di chiusura.
5
5
6
-
The full pattern: `pattern:\[(b|url|quote)\].*?\[/\1\]`.
Please note that besides escaping `pattern:[`and`pattern:]`, we had to escape a slash for the closing tag`pattern:[\/\1]`, because normally the slash closes the pattern.
23
+
Si noti che oltre l'escape di `pattern:[`e`pattern:]`, abbiamo dovuto fare l'escape dello slash del tag di chiusura`pattern:[\/\1]`, poiché normalmente lo slash termina il pattern.
Copy file name to clipboardExpand all lines: 9-regular-expressions/13-regexp-alternation/03-match-quoted-string/solution.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,13 +1,13 @@
1
-
The solution: `pattern:/"(\\.|[^"\\])*"/g`.
1
+
La soluzione: `pattern:/"(\\.|[^"\\])*"/g`.
2
2
3
-
Step by step:
3
+
Passo dopo passo:
4
4
5
-
-First we look for an opening quote`pattern:"`
6
-
-Then if we have a backslash `pattern:\\` (we have to double it in the pattern because it is a special character), then any character is fine after it (a dot).
7
-
-Otherwise we take any character except a quote (that would mean the end of the string) and a backslash (to prevent lonely backslashes, the backslash is only used with some other symbol after it): `pattern:[^"\\]`
8
-
- ...And so on till the closing quote.
5
+
-Innanzitutto cerchiamo un doppio apice di apertura`pattern:"`
6
+
-Quindi se abbiamo un backslash `pattern:\\` (dobbiamo raddoppiarlo nel pattern perché è un carattere speciale), qualsiasi carattere dopo di esso è consentito (il punto).
7
+
-Altrimenti consideriamo ogni carattere eccetto un doppio apice (che significherebbe la fine della stringa) ed un backslash (per evitare backslashe isolati, il backslash è usato soltanto in congiunzione con altri simboli dopo di esso): `pattern:[^"\\]`
Create a regexp to find strings in double quotes`subject:"..."`.
3
+
Create una regexp per trovare le stringhe tra doppi apici`subject:"..."`.
4
4
5
-
The strings should support escaping, the same way as JavaScript strings do. For instance, quotes can be inserted as `subject:\"`a newline as `subject:\n`, and the slash itself as`subject:\\`.
5
+
Le stringhe dovrebbero supportare l'escape allo stesso modo delle stringhe JavaScript. Per esempio, i doppi apici possono essere inseriti come `subject:\"`una nuova linea come `subject:\n`, e lo stesso slash come`subject:\\`.
6
6
7
7
```js
8
8
let str ="Just like \"here\".";
9
9
```
10
10
11
-
Please note, in particular, that an escaped quote `subject:\"`does not end a string.
11
+
Si noti che, in particolare, un doppio apice con escape `subject:\"`non termina una stringa.
12
12
13
-
So we should search from one quote to the other ignoring escaped quotes on the way.
13
+
Noi dovremmo cercare, pertanto, da un doppio apice fino all'altro ignorando quelli con escape tra i due.
14
14
15
-
That's the essential part of the task, otherwise it would be trivial.
15
+
Questo è la parte fondamentale dell'esercitazione, altrimenti diventerebbe banale.
Copy file name to clipboardExpand all lines: 9-regular-expressions/13-regexp-alternation/04-match-exact-tag/task.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,10 @@
1
-
# Find the full tag
1
+
# Trovate l'intero tag
2
2
3
-
Write a regexp to find the tag `<style...>`. It should match the full tag: it may have no attributes `<style>`or have several of them`<style type="..." id="...">`.
3
+
Scrivete una regexp per trovare il tag `<style...>`. Essa dovrebbe trovare corrispondenza con l'intero tag: esso potrebbe non avere alcun attributo`<style>`o averne diversi`<style type="..." id="...">`.
4
4
5
-
...But the regexp should not match`<styler>`!
5
+
La regexp, tuttavia, non dobrebbe accettare`<styler>`!
We already saw a similar thing -- square brackets. They allow to choose between multiple characters, for instance`pattern:gr[ae]y`matches `match:gray`or`match:grey`.
21
+
Abbiamo già incontrato una funzionalità simile: le parentesi quadre. Essi permettono di scegliere tra più caratteri, ad esempio`pattern:gr[ae]y`trova corrispondenza con `match:gray`o`match:grey`.
22
22
23
-
Square brackets allow only characters or character classes. Alternation allows any expressions. A regexp `pattern:A|B|C`means one of expressions`A`, `B`or`C`.
23
+
Le parentesi quadre consentono solo caratteri o classi di caratteri. L'alternanza consente qualsiasi espressione. Una regexp `pattern:A|B|C`significa una delle espressioni`A`, `B`o`C`.
24
24
25
-
For instance:
25
+
Per esempio:
26
26
27
-
-`pattern:gr(a|e)y`means exactly the same as`pattern:gr[ae]y`.
28
-
-`pattern:gra|ey`means`match:gra`or`match:ey`.
27
+
-`pattern:gr(a|e)y`ha lo stesso identico significato di`pattern:gr[ae]y`.
28
+
-`pattern:gra|ey`significa`match:gra`o`match:ey`.
29
29
30
-
To apply alternation to a chosen part of the pattern, we can enclose it in parentheses:
31
-
-`pattern:I love HTML|CSS`matches`match:I love HTML`or`match:CSS`.
32
-
-`pattern:I love (HTML|CSS)`matches `match:I love HTML`or`match:I love CSS`.
30
+
Per applicare l'alternanza ad una determinata parte di un pattern, dobbiamo racchiuderla tra parentesi:
31
+
-`pattern:I love HTML|CSS`trova`match:I love HTML`o`match:CSS`.
32
+
-`pattern:I love (HTML|CSS)`corrisponde a `match:I love HTML`o`match:I love CSS`.
33
33
34
-
## Example: regexp for time
34
+
## Esempio: regexp per un orario
35
35
36
-
In previous articles there was a task to build a regexp for searching time in the form`hh:mm`, for instance`12:00`. But a simple `pattern:\d\d:\d\d` is too vague. It accepts `25:99`as the time (as 99 minutes match the pattern, but that time is invalid).
36
+
Negli articoli precedenti abbiamo effettuato un'esercitazione per realizzare una regexp e trovare un orario nel formato`hh:mm`, ad esempio`12:00`. Un semplice `pattern:\d\d:\d\d`, tuttavia, è troppo impreciso. Accetta un orario come `25:99`(poiché 99 minuti trova corrispondenza nel pattern, ma non è un orario valido).
37
37
38
-
How can we make a better pattern?
38
+
Come possiamo migliorare questo pattern?
39
39
40
-
We can use more careful matching. First, the hours:
40
+
Possiamo cercare una corrispondenza più accurata. Per prima cosa, le ore:
41
41
42
-
-If the first digit is`0`or`1`, then the next digit can be any: `pattern:[01]\d`.
43
-
-Otherwise, if the first digit is`2`, then the next must be`pattern:[0-3]`.
44
-
-(no other first digit is allowed)
42
+
-Se la prima cifra è`0`o`1`, allora la cifra successiva può essere una qualsiasi: `pattern:[01]\d`.
43
+
-Diversamente, se la prima cifra è`2`, la successiva deve essere`pattern:[0-3]`.
44
+
-Non può esserci un altro carattere come prima cifra.
45
45
46
-
We can write both variants in a regexp using alternation: `pattern:[01]\d|2[0-3]`.
46
+
Possiamo scrivere entrambe le varianti in una regexp usando l'alternanza: `pattern:[01]\d|2[0-3]`.
47
47
48
-
Next, minutes must be from `00`to`59`. In the regular expression language that can be written as `pattern:[0-5]\d`: the first digit`0-5`, and then any digit.
48
+
I minuti a seguire, essi devono essere compresi in un intervallo tra `00`e`59`. In un'espressione regolare ciò può essere reso come `pattern:[0-5]\d`: la prima cifra`0-5`, quindi un numero qualsiasi.
49
49
50
-
If we glue hours and minutes together, we get the pattern: `pattern:[01]\d|2[0-3]:[0-5]\d`.
50
+
Unendo le ore con i minuti otteniamo il pattern seguente: `pattern:[01]\d|2[0-3]:[0-5]\d`.
51
51
52
-
We're almost done, but there's a problem. The alternation `pattern:|`now happens to be between`pattern:[01]\d`and`pattern:2[0-3]:[0-5]\d`.
52
+
Abbiamo quasi finito, ma c'è ancora un problema. L'alternanza `pattern:|`al momento sembra avvenire tra`pattern:[01]\d`e`pattern:2[0-3]:[0-5]\d`.
53
53
54
-
That is: minutes are added to the second alternation variant, here's a clear picture:
54
+
In altre parole: i minuti sono aggiunti al secondo termine dell'alternanza, ecco una rappresentazione più chiara:
55
55
56
56
```
57
57
[01]\d | 2[0-3]:[0-5]\d
58
58
```
59
59
60
-
That pattern looks for `pattern:[01]\d`or`pattern:2[0-3]:[0-5]\d`.
60
+
Questo pattern cerca `pattern:[01]\d`o`pattern:2[0-3]:[0-5]\d`.
61
61
62
-
But that's wrong, the alternation should only be used in the "hours" part of the regular expression, to allow `pattern:[01]\d`OR`pattern:2[0-3]`. Let's correct that by enclosing "hours" into parentheses: `pattern:([01]\d|2[0-3]):[0-5]\d`.
62
+
Non è quello che vogliamo, l'alternanza dovrebbe riguardare solo le ore e consentire `pattern:[01]\d`o`pattern:2[0-3]`. Correggiamo racchiudendo le ore tra parentesi: `pattern:([01]\d|2[0-3]):[0-5]\d`.
0 commit comments