select a.name, b.colid, b.text
from sysobjects a , syscomments b
where a.id = b.id
and a.type = 'TR'
and b.text like '%<key word value>%'
order by a.name, b.colid
syscomments table stores the text of the procedures/triggers in multiple rows for the same object. In a row it stores a maximum of 4000 characters. So colid will indicate the corresponding section of the code. This will not work if the triggers have been encrypted. If you only need a list of triggers then you can use the following query instead.
select a.name
from sysobjects a
where a.type = 'TR'
and exists (select * from syscomments b
where a.id = b.id
and b.text like '%<key word value>%')
RT