Протестировано с preg_match_all
в PHP, будет работать для предоставленного вами образца текста:
/(?<=,)[\w\s]*(College|University|Institute)[^,\d]*(?=,|\d)/
Необходимо будет несколько изменить, если ваш движок регулярных выражений не поддерживает lookaheads / lookbehinds.1006 *
Обновление: я посмотрел на ваш связанный образец текста и соответственно обновил регулярное выражение
/([A-Z][^\s,.]+[.]?\s[(]?)*(College|University|Institute|Law School|School of|Academy)[^,\d]*(?=,|\d)/
Первая часть будет соответствовать строке, начинающейся с заглавной буквы, за которой может следовать .
.Затем пробел, затем, необязательно, (
.Этому шаблону соответствует ноль или более раз.
Это должно получить все релевантные слова, предшествующие ключевым словам.