更新
我在文件中有一堆这样的字符串:
M.S., Arizona University, Tucson, Az., 1957
B.A., American International College, Springfield, Mass., 1978
B.A., American University, Washington, D.C., 1985
我想提取塔夫茨大学、美国国际学院、美国大学、马萨诸塞大学等,但不包括高中(可以安全地假设,如果它包含"学院"或"高中",那就是一所高中)。有什么想法吗?
在 PHP 中使用preg_match_all
进行测试,将适用于您提供的示例文本:
/(?<=,)[ws]*(College|University|Institute)[^,d]*(?=,|d)/
如果您的正则表达式引擎不支持前瞻/后视,则需要进行一些修改。
更新
:我查看了您链接的示例文本并相应地更新了正则表达式
/([A-Z][^s,.]+[.]?s[(]?)*(College|University|Institute|Law School|School of|Academy)[^,d]*(?=,|d)/
第一部分将匹配以大写字母开头的字符串,可以选择后跟.
。然后是一个空格,然后是一个可选的(
.此模式匹配零次或多次。
这应该在关键字之前获取所有相关单词。