Was ist in Regex ( b) keine Wörtergrenze im Vergleich zu Wortgrenzen?
-
13-10-2019 - |
Frage
Was ist in Regex ( b) keine Wörtergrenze im Vergleich zu Wortgrenzen?
Lösung
Eine Wortgrenze (\b
) Ist ein Null -Breiten -Match, das übereinstimmen kann:
- Zwischen einem Wortcharakter (
\w
) und ein Nicht-Wort-Charakter (\W
) oder - Zwischen einem Wortzeichen und dem Start oder Ende der Zeichenfolge.
In JavaScript die Definition von \w
ist [A-Za-z0-9_]
und \W
ist alles andere.
Die negierte Version von \b
, geschrieben \B
, ist ein Null -Breiten -Match, bei dem die oben genannten Tätigkeiten ausführen nicht halt. Deshalb kann es übereinstimmen:
- Zwischen zwei Wortzeichen.
- Zwischen zwei Nicht-Wort-Charakteren.
- Zwischen einem Nicht-Wort-Charakter und dem Start oder Ende der Zeichenfolge.
- Die leere Zeichenfolge.
Zum Beispiel, wenn die Zeichenfolge ist "Hello, world!"
dann \b
Übereinstimmung an den folgenden Stellen:
H e l l o , w o r l d !
^ ^ ^ ^
Und \B
entspricht den Orten, an denen \b
Passt nicht:
H e l l o , w o r l d !
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
Andere Tipps
Der grundlegende Zweck von non-word-boundary
ist ein Regex zu erstellen, der steht:
Wenn wir uns am Anfang/Ende von a befinden
word char
(\w
=[a-zA-Z0-9_]
) Stellen Sie sicher, dass der vorherige/nächste Zeichen auch a istword char
,z.B:
"a\B."
~"a\w"
:"ab"
,"a4"
,"a_"
, ... aber nicht"a "
,"a."
Wenn wir uns am Anfang/Ende von a befinden
non-word char
(\W
=[^a-zA-Z0-9_]
) Stellen Sie sicher, dass der vorherige/nächste Zeichen auch a istnon-word char
,z.B:
"-\B."
~"-\W"
:"-."
,"- "
,"--"
, ... aber nicht"-a"
,"-1"
Zum word-boundary
Es ist ähnlich, aber anstatt sicherzustellen, dass die angrenzenden Zeichen der gleichen Klasse sind (word char
/non-word car
) Sie müssen sich unterscheiden, daher der Name word's boundary
.