Skip to content

Commit ba5052c

Browse files
authored
Merge pull request #293 from marcellosurdi/article/regexp-boundary
Word boundary: \b
2 parents f388f6f + dfe8cd7 commit ba5052c

File tree

2 files changed

+24
-24
lines changed

2 files changed

+24
-24
lines changed
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# Trova l'orario
1+
# Trovate l'orario
22

33
L'orario ha il formato: `ore:minuti`. Sia ore sia minuti sono formati da due cifre, come `09:00`.
44

5-
Crea una regexp per trovare l'orario nella stringa: `subject:Colazione alle 09:00 nella stanza 123:456.`
5+
Create una regexp per trovare l'orario nella stringa: `subject:Breakfast at 09:00 in the room 123:456.`
66

7-
P.S. In questo esercizio non c'è ancora bisogno di controllare la correttezza dell'orario, quindi `25:99` è considerato un risultato valido.
7+
P.S. In questo esercizio non c'è bisogno di controllare la correttezza dell'orario, quindi `25:99` è considerato un risultato valido.
88
P.P.S. La regexp non dovrebbe restituire `123:456`.
Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,52 @@
1-
# Word boundary: \b
1+
# Confine di parola: \b
22

3-
A word boundary `pattern:\b` is a test, just like `pattern:^` and `pattern:$`.
3+
Il confine di parola `pattern:\b` è un test, proprio come `pattern:^` e `pattern:$`.
44

5-
When the regexp engine (program module that implements searching for regexps) comes across `pattern:\b`, it checks that the position in the string is a word boundary.
5+
Quando l'interprete delle regexp (il modulo software che cerca all'interno delle espressioni regolari) incontra `pattern:\b`, verifica se la posizione nella stringa sia un confine di parola.
66

7-
There are three different positions that qualify as word boundaries:
7+
Ci sono tre differenti posizioni che qualificano il confine di parola:
88

9-
- At string start, if the first string character is a word character `pattern:\w`.
10-
- Between two characters in the string, where one is a word character `pattern:\w` and the other is not.
11-
- At string end, if the last string character is a word character `pattern:\w`.
9+
- Ad inizio stringa, se il primo carattere di essa è un carattere di parola `pattern:\w`.
10+
- Tra due caratteri di una stringa, laddove il primo sia un carattere di parola `pattern:\w` e l'altro no.
11+
- A fine stringa, se l'ultimo carattere è un carattere di parola `pattern:\w`.
1212

13-
For instance, regexp `pattern:\bJava\b` will be found in `subject:Hello, Java!`, where `subject:Java` is a standalone word, but not in `subject:Hello, JavaScript!`.
13+
Ad esempio, la regexp `pattern:\bJava\b` troverà corrispondenza in `subject:Hello, Java!`, dove `subject:Java` è una parola a sé, ma non troverà alcuna corrispondenza in `subject:Hello, JavaScript!`.
1414

1515
```js run
1616
alert( "Hello, Java!".match(/\bJava\b/) ); // Java
1717
alert( "Hello, JavaScript!".match(/\bJava\b/) ); // null
1818
```
1919

20-
In the string `subject:Hello, Java!` following positions correspond to `pattern:\b`:
20+
Nella stringa `subject:Hello, Java!` trovano riscontro in `pattern:\b` le seguenti posizioni:
2121

2222
![](hello-java-boundaries.svg)
2323

24-
So, it matches the pattern `pattern:\bHello\b`, because:
24+
Pertanto la corrispondenza con il pattern `pattern:\bHello\b` viene trovata perché:
2525

26-
1. At the beginning of the string matches the first test `pattern:\b`.
27-
2. Then matches the word `pattern:Hello`.
28-
3. Then the test `pattern:\b` matches again, as we're between `subject:o` and a comma.
26+
1. All'inizio della stringa trova riscontro con il primo test `pattern:\b`.
27+
2. Successivamente identifica la parola `pattern:Hello`.
28+
3. Infine trova ancora corrispondenza con il test `pattern:\b`, dal momento che la posizione corrente è tra una `subject:o` e una virgola.
2929

30-
So the pattern `pattern:\bHello\b` would match, but not `pattern:\bHell\b` (because there's no word boundary after `l`) and not `Java!\b` (because the exclamation sign is not a wordly character `pattern:\w`, so there's no word boundary after it).
30+
Viene quindi individuato il pattern `pattern:\bHello\b`, ma non `pattern:\bHell\b` (perché non c'è un confine di parola dopo la `l`) e non `Java!\b` (perché il punto esclamativo non è un carattere di parola `pattern:\w`, quindi non c'è confine di parola dopo di esso).
3131

3232
```js run
3333
alert( "Hello, Java!".match(/\bHello\b/) ); // Hello
3434
alert( "Hello, Java!".match(/\bJava\b/) ); // Java
35-
alert( "Hello, Java!".match(/\bHell\b/) ); // null (no match)
36-
alert( "Hello, Java!".match(/\bJava!\b/) ); // null (no match)
35+
alert( "Hello, Java!".match(/\bHell\b/) ); // null (nessuna corrispondenza)
36+
alert( "Hello, Java!".match(/\bJava!\b/) ); // null (nessuna corrispondenza)
3737
```
3838

39-
We can use `pattern:\b` not only with words, but with digits as well.
39+
Possiamo usare `pattern:\b` anche con i numeri non solo con le parole.
4040

41-
For example, the pattern `pattern:\b\d\d\b` looks for standalone 2-digit numbers. In other words, it looks for 2-digit numbers that are surrounded by characters different from `pattern:\w`, such as spaces or punctuation (or text start/end).
41+
Il pattern `pattern:\b\d\d\b`, ad esempio, cerca due caratteri numerici a sé stanti. In altre parole, cerca un numero di due cifre delimitato da caratteri differenti da `pattern:\w`, come spazi o punteggiatura (o l'inizio/la fine della stringa).
4242

4343
```js run
4444
alert( "1 23 456 78".match(/\b\d\d\b/g) ); // 23,78
4545
alert( "12,34,56".match(/\b\d\d\b/g) ); // 12,34,56
4646
```
4747

48-
```warn header="Word boundary `pattern:\b` doesn't work for non-latin alphabets"
49-
The word boundary test `pattern:\b` checks that there should be `pattern:\w` on the one side from the position and "not `pattern:\w`" - on the other side.
48+
```warn header="Il confine di parola `pattern:\b` funziona solo con l'alfabeto latino"
49+
Il test di confine parola `pattern:\b` controlla che ci sia `pattern:\w` da un lato della posizione e che non ci sia `pattern:\w` dall'altro lato.
5050

51-
But `pattern:\w` means a latin letter `a-z` (or a digit or an underscore), so the test doesn't work for other characters, e.g. cyrillic letters or hieroglyphs.
51+
Ma `pattern:\w` significa una lettera dell'alfabeto latino `a-z` (o un numero o un underscore), pertanto il test non è efficace per altri caratteri, es. caratteri cirillici o simboli grafici.
5252
```

0 commit comments

Comments
 (0)