^start of line
.*?any Unicode character (except for line terminators), repeated any number of times
\ba Unicode word boundary
Negative Lookbehind(?<!forbidden\W) forbiddenthe literal text forbidden (case sensitive) \Wany character that is not a Unicode word character
Group 1(word1|word2|word3) word1the literal text word1 (case sensitive) word2the literal text word2 (case sensitive) word3the literal text word3 (case sensitive) \ba Unicode word boundary
.*any Unicode character (except for line terminators), repeated any number of times
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