42

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

2 Answers 2

108

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 !
  ^ ^ ^ ^   ^   ^ ^ ^ ^   ^
Sign up to request clarification or add additional context in comments.

3 Comments

Nice one. In my experience, explaining word boundaries is considerably more difficult than using them.
I have not seen such a lucid explanation of word boundaries before. Great one!
For the \B example, the label between start of string and H is missing. Nice explanation otherwise.
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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.