Quali sono non-parola di confine in regex (\ B), rispetto al word-confine?
-
13-10-2019 - |
Domanda
Quali sono non-limite di parola in regex (\ B), rispetto al word-confine?
Soluzione
Un limite di parola (\b
) è una partita di larghezza pari a zero che può abbinare:
- Tra un carattere di parola (
\w
) e un carattere non-parola (\W
) o - tra un carattere di parola e l'inizio o la fine della stringa.
In JavaScript la definizione di \w
è [A-Za-z0-9_]
e \W
è tutto il resto.
La versione negata di \b
, \B
scritta, è una partita di larghezza zero quando il sopra non attesa. Pertanto si può abbinare:
- Tra due caratteri di parola.
- Tra due caratteri non-parola.
- tra un carattere di non-parola e l'inizio o la fine della stringa.
- La stringa vuota.
Per esempio, se la stringa è "Hello, world!"
poi partite \b
nei seguenti luoghi:
H e l l o , w o r l d !
^ ^ ^ ^
E \B
soddisfa quei luoghi dove \b
non corrisponde:
H e l l o , w o r l d !
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
Altri suggerimenti
Lo scopo principale di non-word-boundary
è quello creato una regex che dice:
-
se siamo all'inizio / fine di un
word char
(\w
=[a-zA-Z0-9_]
) assicurarsi che il carattere successivo precedente / è anche unword char
,es .:
"a\B."
~"a\w"
:"ab"
,"a4"
,"a_"
, ... ma non"a "
,"a."
-
se siamo all'inizio / fine di un
non-word char
(\W
=[^a-zA-Z0-9_]
) assicurarsi che il carattere successivo precedente / è anche unnon-word char
,es .:
"-\B."
~"-\W"
:"-."
,"- "
,"--"
, ... ma non"-a"
,"-1"
Per word-boundary
è simile ma invece di fare in modo che i caratteri adiacenti sono della stessa classe (word char
/ non-word car
) devono differire, da cui il nome word's boundary
.