Регулярное выражение для извлечения названий колледжей, университетов и институтов?

#regex #web-scraping

#регулярное выражение #очистка веб-страниц

Вопрос:

У меня есть куча строк, подобных этой, в файле:

 M.S., Arizona University, Tucson, Az., 1957
B.A., American International College, Springfield, Mass., 1978
B.A., American University, Washington, D.C., 1985
  

и я хотел бы извлечь Университет Тафтса, Американский международный колледж, Американский университет, Университет Массачусетса и т.д., Но не средние школы (вероятно, можно с уверенностью предположить, что если он содержит «Академию» или «Среднюю школу», то это средняя школа). Есть идеи?

Ответ №1:

Протестировано с preg_match_all на PHP, будет работать для предоставленного вами образца текста:

  /(?<=,)[ws]*(College|University|Institute)[^,d]*(?=,|d)/
  

Потребуется несколько изменить, если ваш движок регулярных выражений не поддерживает поисковые системы.


Обновление: я просмотрел ваш связанный образец текста и соответствующим образом обновил регулярное выражение

  /([A-Z][^s,.] [.]?s[(]?)*(College|University|Institute|Law School|School of|Academy)[^,d]*(?=,|d)/
  

Первая часть будет соответствовать строке, начинающейся с заглавной буквы, за которой необязательно следует . . Затем пробел, затем необязательно ( . Этот шаблон сопоставляется ноль или более раз.

При этом должны быть получены все соответствующие слова, предшествующие ключевым словам.