^start of line
.*?any Unicode character (except for line terminators), repeated any number of times
Negative Lookbehind(?<!forbidden) forbiddenthe literal text forbidden (case sensitive) Negative Lookbehind(?<![^\w\n]) Negated Character Class[^\w\n] \wa Unicode word character
\na line-feed (newline) character (ASCII 10)
Negated Character Class[^\w\n]* *matches any number of characters outside the set below:
\wa Unicode word character
\na line-feed (newline) character (ASCII 10)
\ba Unicode word boundary
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