Could you create a calculated field using and IF statement and the CONTAINS operator?
IF CONTAINS([Dimension],'finance.com') THEN 'Finance'
ELSEIF CONTAINS([Dimension],'sports.com') THEN 'Sports'
Since there is no overlap, it doesn't matter what order you make your IF and ELSE clauses...
Exactly what I was after - I tried something similar but must have messed up the logic.