\b
entspricht einer Wortgrenze der Länge Null, kein Leerzeichen. Sie suchen nach etwas mehr wie folgt aus:
/first\b.\bsecond/.match('first second')
Dieser jedes Zeichen wird (.
) zwischen first
und second
, solange es eine Wortgrenze auf beiden Seiten ist.
Dies ist jedoch nicht, wie Wortgrenzen in der Regel verwendet werden (da es keine Notwendigkeit, eine Null-Längenprüfung zu verwenden, wenn Sie das Wort Grenze selbst passen). \b
sucht im Wesentlichen nach einem Wortzeichen nach einem Nicht-Wort-Zeichen; so, stattdessen könnte man für ein Nicht-Wortzeichen aussieht nur in-zwischen den t
in first
und s
in second
:
/first\Wsecond/.match('first second')
Dies ist genau das gleiche wie das erste Beispiel ... aber realistisch gesehen, Sie wahrscheinlich wollen nur Leerzeichen übereinstimmen und so etwas wie diese verwenden:
/first\ssecond/.match('first second')
@ WiktorStribiżew drittes Beispiel zeigt die beste Verwendung von Wortgrenzen (Anfang und Ende). Dies liegt daran, dass Sie vorher oder nachher nichts zuordnen, daher ist ein Null-Längen-Test hilfreich. Ansonsten könnten die obigen Beispiele etwas wie first secondary
entsprechen. Am Ende würde ich einen Ausdruck wie verwenden:
/\bfirst\ssecond\b/.match('first second')
Siehe http://stackoverflow.com/questions/39875620/python-regex-words-boundary-with-unexpected-results/39876126#39876126. '\ b' stimmt nicht mit den Leerzeichen überein und es gibt eine zwischen' first' und 'second'. –
'\ b' wird normalerweise nur am Anfang oder Ende eines Ausdrucks verwendet, da sein Nutzen an anderen Stellen fraglich ist. – tadman
@tadman es gibt eine Chance, dass '\ b' in der Mitte eines Ausdrucks nützlich sein kann, aber es ist so selten, dass ich nicht an einen realen Anwendungsfall denken kann. So etwas ist eine effiziente Verwendung: '/ [az] \ b [az] /' – Sam