You are splitting
PW:root:passwd:(?<!\broot:)x:0: on a colon. Which means your regexp becomes
(?<!\broot. Probably not what you want. In fact, that doesn't even compile, evident by the fact you print your compiled regex, but it doesn't show in the output.
You might want to give your split a third argument.