^start of line
Negative Lookahead(?!\D*(?:python|php)) \D*any character that's not a digit, repeated any number of times
Non-Capturing Group(?:python|php) pythonthe literal text python (case sensitive) phpthe literal text php (case sensitive) \D*any character that's not a digit, repeated any number of times
\d+a digit, repeated at least once
\s?optionally matches any whitespace character
Negated Character Class[^\W\d_]+ +matches at least one character outside the set below:
\Wany non-word character
\da digit
_the literal _ (9510 / 1378 / 5F16)
\s?optionally matches any whitespace character
\d{2}a digit, repeated exactly 2 times
\s?optionally matches any whitespace character
\d{3}a digit, repeated exactly 3 times
\s?optionally matches any whitespace character
\w+any word character, repeated at least once
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