I have this expression
\\b[A-Za-z]+\\b
If I give abc@de mnop, it matches abc, de and mnop
\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(^)
\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|$).
Regex word boundary doen't match(\b) matching and whitespace
Only white in sample is
abc@de mnop
^
Try \s([A-Za-z]+)\b
where \s is the anchor, not a boundry at all