What are non-word boundary in regex (\B), compared to word-boundary?
Asked Answered
A

2

41

What are non-word boundary in regex (\B), compared to word-boundary?

Attitudinarian answered 27/12, 2010 at 20:25 Comment(0)
A
105

A word boundary (\b) is a zero width match that can match:

  • Between a word character (\w) and a non-word character (\W) or
  • Between a word character and the start or end of the string.

In Javascript the definition of \w is [A-Za-z0-9_] and \W is anything else.

The negated version of \b, written \B, is a zero width match where the above does not hold. Therefore it can match:

  • Between two word characters.
  • Between two non-word characters.
  • Between a non-word character and the start or end of the string.
  • The empty string.

For example if the string is "Hello, world!" then \b matches in the following places:

 H e l l o ,   w o r l d !
^         ^   ^         ^ 

And \B matches those places where \b doesn't match:

 H e l l o ,   w o r l d !
  ^ ^ ^ ^   ^   ^ ^ ^ ^   ^
Apus answered 27/12, 2010 at 20:28 Comment(3)
Nice one. In my experience, explaining word boundaries is considerably more difficult than using them.Shrum
I have not seen such a lucid explanation of word boundaries before. Great one!Phaeton
For the \B example, the label between start of string and H is missing. Nice explanation otherwise.Importunate
S
4

The basic purpose of non-word-boundary is to created a regex that says:

  • if we are at the beginning/end of a word char (\w = [a-zA-Z0-9_]) make sure the previous/next character is also a word char,

    e.g.: "a\B." ~ "a\w":

    "ab", "a4", "a_", ... but not "a ", "a."

  • if we are at the beginning/end of a non-word char (\W = [^a-zA-Z0-9_]) make sure the previous/next character is also a non-word char,

    e.g.: "-\B." ~ "-\W":

    "-.", "- ", "--", ... but not "-a", "-1"

For word-boundary it's similar but instead of making sure that the adjacent characters are of the same class (word char/non-word car) they need to differ, hence the name word's boundary.

Scone answered 2/6, 2015 at 12:29 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.