Frage

Was ist in Regex ( b) keine Wörtergrenze im Vergleich zu Wortgrenzen?

War es hilfreich?

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 ist word 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 ist non-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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top