How to query NOT LIKE?
You have your parentheses wrong.
Instead of:
NOT(Field__c LIKE 'fuzzymatch')
Use:
(NOT Field__c LIKE 'fuzzymatch')
Better to change SOQL like this, it will work
List<User> users = [SELECT Id, Name, Email, ProfileId
FROM User WHERE (NOT Email LIKE '%@example.com')
AND (ProfileId NOT IN:profileIds.keySet())];