The order of the filters is critical when there are multiple filters. This is what worked (1st to last filter) for a combination of filters for Pylint, Flake8, Cppcheck, and gcc:
%FILE%:%LINE%:%CHAR%:*error*
%FILE%:%LINE%:*note*
%FILE%:%LINE%:%CHAR%:*
*:%FILE%:%LINE%:*
I assume that NppExec’s logic follows a series of conditional statements when processing the filters.