Ich lese ein Buch über regulären Ausdruck und bin auf dieses Beispiel gestoßen für \b
:
Die Katze verteilte sein Futter im ganzen Raum.
Regex verwenden - entspricht \bcat\b
dem Wort, cat
aber nicht dem cat
In scattered
.
Für \B
den Autor wird folgendes Beispiel verwendet:
Bitte geben Sie die neunstellige ID ein
erscheint auf Ihrem farbcodierten Pass-Key.
Verwenden von Regex- \B-\B
Übereinstimmungen -
zwischen den Wörtern color - coded
. Die Verwendung \b-\b
auf der anderen Seite entspricht der -
in nine-digit
und pass-key
.
Wie kommt es, dass wir im ersten Beispiel \b
trennen cat
und im zweiten Beispiel \B
trennen -
? Die Verwendung \b
im zweiten Beispiel bewirkt das Gegenteil von dem, was zuvor getan wurde.
Bitte erklären Sie mir den Unterschied.
EDIT: Kann jemand bitte mit einem neuen Beispiel erklären?
-
nicht als Teil eines Wortes betrachtet wird. Ebenso!
ist kein Teil eines Wortes. Also wieder\b!\b
"uunet! Iamold", aber nicht "Wow! Du bist". Sie können dieses Zeug auf regexpal.com ausprobieren .\B matches the empty string not at the beginning or end of a word
\b
ist eine Wortgrenze mit der Breite Null. Speziell:Beispiel:
.\b
Übereinstimmungenc
inabc
\B
ist eine Nicht-Wortgrenze mit einer Breite von Null. Speziell:Beispiel:
\B.\B
Übereinstimmungenb
inabc
Weitere Informationen zu regulären Regex finden Sie unter reguläre-Ausdrücke.info
quelle
string.match()
kehrt nur das erste Spiel, es sei denn , Sie fügen Sie die globale Flaggeg
:"abc def".match(/\b./g)
Erträge['a', ' ', 'd']
Mit einem anderen Beispiel:
Angenommen, dies ist die Zeichenfolge und das Muster, nach dem gesucht werden soll, ist 'cat':
text = "catmania thiscat thiscatmaina";
Nun Definitionen,
'\ b' findet / stimmt mit dem Muster am Anfang oder Ende jedes Wortes überein.
'\ B' findet / stimmt nicht mit dem Muster am Anfang oder Ende jedes Wortes überein.
Verschiedene Fälle:
Fall 1: Am Anfang jedes Wortes
result = text.replace(/\bcat/g, "ct");
Das Ergebnis ist "ctmania thiscat thiscatmaina".
Fall 2: Am Ende jedes Wortes
result = text.replace(/cat\b/g, "ct");
Das Ergebnis ist nun "catmania thisct thiscatmaina".
Fall 3: Nicht am Anfang
result = text.replace(/\Bcat/g, "ct");
Das Ergebnis ist nun "catmania thisct thisctmaina".
Fall 4: Nicht am Ende
result = text.replace(/cat\B/g, "ct");
Das Ergebnis ist "ctmania thiscat thisctmaina".
Fall 5: Weder Anfang noch Ende
result = text.replace(/\Bcat\B/g, "ct");
Das Ergebnis ist "catmania thiscat thisctmaina".
Hoffe das hilft :)
quelle
Das Metazeichen \ b ist ein Anker wie das Caret und das Dollarzeichen. Es stimmt an einer Position überein, die als "Wortgrenze" bezeichnet wird. Diese Übereinstimmung hat eine Länge von Null.
Es gibt drei verschiedene Positionen, die als Wortgrenzen gelten:
\ B ist die negierte Version von \ b . \ B stimmt an jeder Position überein, an der \ b nicht übereinstimmt. Tatsächlich stimmt \ B an jeder Position zwischen zwei Wortzeichen sowie an jeder Position zwischen zwei Nichtwortzeichen überein.
Quelle: http://www.regular-expressions.info/wordboundaries.html
quelle
\b
entspricht einer Wortgrenze.\B
Entspricht Nicht-Wortgrenzen und entspricht (danke an @Alan Moore für die Korrektur!) . Beide sind[^\b]
(?!\b)
eine Breite von Null.Weitere Informationen finden Sie unter http://www.regular-expressions.info/wordboundaries.html . Die Seite ist äußerst nützlich für viele grundlegende Regex-Fragen.
quelle
\B
ist nicht gleichbedeutend mit[^\b]
. Eine Zeichenklasse ([...]
oder[^...]
) verbraucht genau ein Zeichen, während Zusicherungen mit einer Breite von Null nichts mögen\b
und\B
nichts verbrauchen. Wenn Sie\b
eine Zeichenklasse eingeben, hat dies eine völlig andere Bedeutung: Entspricht[\b]
einer Rücktaste und einem[^\b]
beliebigen Zeichen mit Ausnahme einer Rücktaste.\B
ist wirklich gleichbedeutend mit(?!\b)
.Nehmen wir eine Zeichenfolge wie:
Hinweis: Der Unterstrich (_) wird in diesem Fall nicht als Sonderzeichen betrachtet.
/\bX\b/g
Sollte mit einem Sonderzeichen oder Leerzeichen beginnen und enden/\bX/g
Sollte mit einem Sonderzeichen oder einem Leerzeichen beginnen/X\b/g
Sollte mit einem Sonderzeichen oder einem Leerzeichen enden/\BX\B/g
Sollte nicht beginnen und mit einem Sonderzeichen oder nicht enden
/\BX/g
Sollte nicht mit einem Sonderzeichen oder beginnen/X\B/g
Sollte nicht mit einem Sonderzeichen oder Leerzeichen enden/\bX\B/g
Sollte mit einem Sonderzeichen oder einem Leerzeichen beginnen und nicht enden/\BX\b/g
Sollte nicht beginnen und mit einem Sonderzeichen oder Leerzeichen endenquelle
Quelle © Copyright RexEgg.com
Wortgrenze: \ b *
Die Wortgrenze \ b entspricht Positionen, an denen eine Seite ein Wortzeichen ist (normalerweise ein Buchstabe, eine Ziffer oder ein Unterstrich - siehe unten für Variationen zwischen den Engines) und die andere Seite kein Wortzeichen ist (zum Beispiel kann es der Anfang von sein die Zeichenfolge oder ein Leerzeichen).
Der reguläre Ausdruck \ bcat \ b würde daher mit Katze in einer schwarzen Katze übereinstimmen, aber nicht mit Katatonik, Kater oder Zertifikat. Wenn Sie eine der Grenzen entfernen, würde \ bcat mit Katze in Wels übereinstimmen, und Katze \ b würde mit Katze in Kater übereinstimmen, aber nicht umgekehrt. Beide würden natürlich alleine zur Katze passen.
Keine Wortgrenze: \ B.
\ B stimmt mit allen Positionen überein, an denen \ b nicht übereinstimmt. Daher passt es:
✽ Wenn keine Seite ein Wortzeichen ist, z. B. an einer beliebigen Stelle in der Zeichenfolge $ = (@ -% ++) (einschließlich Anfang und Ende der Zeichenfolge)
✽ Wenn beide Seiten ein Wortzeichen sind, zum Beispiel zwischen dem H und dem i in Hi!
Dies mag nicht sehr nützlich erscheinen, aber manchmal ist \ B genau das, was Sie wollen. Zum Beispiel,
✽ \ Bcat \ B findet die Katze vollständig von Wortzeichen umgeben, wie im Zertifikat, jedoch weder für sich noch am Anfang oder Ende von Wörtern.
✽ cat \ B findet Katze sowohl im Zertifikat als auch im Wels, jedoch weder im Kater noch allein.
✽ \ Bcat findet Katze sowohl im Zertifikat als auch im Kater, aber weder im Wels noch allein.
✽ \ Bcat | cat \ B findet eine Katze in einer eingebetteten Situation, z. B. in einem Zertifikat, einem Wels oder einem Kater, jedoch nicht allein.
quelle
\ b wird als Wortgrenze verwendet
Finde alle "Katzen" im obigen Wort
ohne \ b
mit B
quelle
\B
ist nicht\b
zB negativ\b
pass-key
Hier gibt es keine Wortgrenze,-
damit sie übereinstimmt\B
in Ihrem ersten Beispiel Es gibt eine Wortgrenze neben cat, damit sie übereinstimmt\b
Ähnliche Regeln gelten auch für andere.
\W
ist negativ von\w
\UPPER CASE
ist negativ von\LOWER CASE
quelle