php / regex - 从文本中提取专有名词

时间:2011-09-30 11:46:04

标签: php regex

我想从PHP正则表达式的文本中提取专有名词(例如Micheal Jackson),但我的正则表达式不正确。

案文:

  

我的朋友迈克尔杰克逊是流行音乐之王。游戏专辑卖得不多。

我想要的是什么:

正则表达式能够提取多个单词的专有名词,例如Micheal Jackson或The Game Album。

我的正则表达式:

/(?<=\s)([A-Z][a-z]+).*(?=\s)/

感谢。

P.S。通过移动设备发布。如果格式不佳,请道歉。

2 个答案:

答案 0 :(得分:3)

尝试使用单词边界而不是lookbehind / lookahead

/\b([A-Z][a-z]+)\b/

我不理解你的.*部分,它会匹配第一个单词后的任何内容,直到最后一个空格,所以我将其从正则表达式中删除。

如果你想一次匹配多个单词(也许你想用.*来实现这个目标?)试试这个:

(?:\s*\b([A-Z][a-z]+)\b)+

here on Regexr

答案 1 :(得分:1)

斯坦福分析师可以在这里为您提供帮助。它将根据句子结构标记你的短语并提取专有名词和所有其他部分。

它可以通过jar下载获得,也可以在线试用:http://nlp.stanford.edu:8080/parser/