我想从PHP正则表达式的文本中提取专有名词(例如Micheal Jackson),但我的正则表达式不正确。
案文:
我的朋友迈克尔杰克逊是流行音乐之王。游戏专辑卖得不多。
我想要的是什么:
正则表达式能够提取多个单词的专有名词,例如Micheal Jackson或The Game Album。
我的正则表达式:
/(?<=\s)([A-Z][a-z]+).*(?=\s)/
感谢。
P.S。通过移动设备发布。如果格式不佳,请道歉。
答案 0 :(得分:3)
尝试使用单词边界而不是lookbehind / lookahead
/\b([A-Z][a-z]+)\b/
我不理解你的.*
部分,它会匹配第一个单词后的任何内容,直到最后一个空格,所以我将其从正则表达式中删除。
如果你想一次匹配多个单词(也许你想用.*
来实现这个目标?)试试这个:
(?:\s*\b([A-Z][a-z]+)\b)+
答案 1 :(得分:1)
斯坦福分析师可以在这里为您提供帮助。它将根据句子结构标记你的短语并提取专有名词和所有其他部分。
它可以通过jar下载获得,也可以在线试用:http://nlp.stanford.edu:8080/parser/