Regex whitespace word boundary
I have this expression
\b[A-Za-z]+\b
If I give abc@de mnop
, it matches abc
, de
and mnop
, but I want it to match only mnop
. How can I do that?
Solution 1:
\b
is a word boundary.
So, \b
is similar to [^a-zA-Z0-9_]
i.e \b
would check for anything except word
You can instead use this regex
(?<=\s|^)[a-zA-Z]+(?=\s|$)
-------- --------- ------
| | |->match only if the pattern is followed by a space(\s) or end of string/line($)
| |->pattern
|->match only if the pattern is preceded by space(\s) or start of string\line(^)
Solution 2:
\b
means (?:(?<!\w)(?=\w)|(?<=\w)(?!\w))
. Which would match positions between letters and @
.
You can write:
(?<!\S)[A-Za-z]+(?!\S)
(?!\S)
is equivalent to (?=\s|$)
.