正则表达式提取学院,大学和研究所的名称?

时间:2011-05-09 15:33:58

标签: 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 个答案:

答案 0 :(得分:2)

在PHP中使用preg_match_all进行测试,将适用于您提供的示例文本:

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

如果您的正则表达式引擎不支持前瞻/后视,则需要进行一些修改。


更新:我查看了您的链接示例文字&amp;相应地更新了正则表达式

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

第一部分将匹配以大写字母开头的字符串,可选地后跟.。然后是一个空格,然后可选择(。此模式匹配零次或多次。

这应该得到关键词之前的所有相关词。