\ba Unicode word boundary
hasthe literal text has (case sensitive) \sa Unicode whitespace character
Non-Capturing Group(?:(?!\bhas\b)[^,."]){0,50}? {0,50}?repeats the group contents below between 0 and 50 times:
Negative Lookahead(?!\bhas\b) \ba Unicode word boundary
hasthe literal text has (case sensitive) \ba Unicode word boundary
Negated Character Class[^,."] ,the literal , (4410 / 548 / 2C16)
.the literal . (4610 / 568 / 2E16)
"the literal " (3410 / 428 / 2216)
\ba Unicode word boundary
donethe literal text done (case sensitive) \ba Unicode word boundary
g modifier: global. Finds all matches instead of stopping after the first
m modifier: multiline. Causes ^ and $ to match the start and end of each line, not only the start and end of the string