Que sont les limites de mots dans la regex (B), par rapport aux limites de mots?
Réponses:
66 pour la réponse № 1Une limite de mots (b
) est une correspondance de largeur zéro qui peut correspondre à:
- Entre un caractère de mot (
w
) et un caractère autre que le mot (W
) ou - Entre un caractère de mot et le début ou la fin de la chaîne.
En Javascript la définition de w
est [A-Za-z0-9_]
et W
y a rien d'autre.
La version annulée de b
, écrit B
, est une correspondance de largeur zéro où ce qui précède ne ne pas tenir. Par conséquent, il peut correspondre à:
- Entre deux mots
- Entre deux caractères autres que des mots.
- Entre un caractère autre qu'un mot et le début ou la fin de la chaîne.
- La chaîne vide.
Par exemple si la chaîne est "Hello, world!"
puis b
matchs dans les endroits suivants:
H e l l o , w o r l d !
^ ^ ^ ^
Et B
correspond à ces endroits où b
ne correspond pas:
H e l l o , w o r l d !
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
2 pour la réponse № 2
Le but fondamental de non-word-boundary
est de créer une expression rationnelle qui dit:
si nous sommes au début / à la fin d'un
word char
(w
=[a-zA-Z0-9_]
) assurez-vous que le caractère précédent / suivant est aussi unword char
,par exemple.:
"aB."
~"aw"
:"ab"
,"a4"
,"a_"
, ... mais non"a "
,"a."
si nous sommes au début / à la fin d'un
non-word char
(W
=[^a-zA-Z0-9_]
) assurez-vous que le caractère précédent / suivant est aussi unnon-word char
,par exemple.:
"-B."
~"-W"
:"-."
,"- "
,"--"
, ... mais non"-a"
,"-1"
Pour word-boundary
il est similaire mais au lieu de s’assurer que les caractères adjacents sont de la même classe (word char
/non-word car
) ils doivent différer, d'où le nom word"s boundary
.