我想从PHP正则表达式中提取专有名词(例如Micheal Jackson),但是我的正则表达式不正确。php/regex - 从文本中提取专有名词
文本:
我的朋友迈克尔杰克逊是流行音乐之王。游戏专辑卖得很少。
我想要什么:
一个正则表达式是能够提取的多个单词e.g迈克尔杰克逊还是游戏专辑专有名词。
我的正则表达式:
/(?<=\s)([A-Z][a-z]+).*(?=\s)/
感谢。
P.S.通过移动设备发布。道歉,如果格式不好。
我想从PHP正则表达式中提取专有名词(例如Micheal Jackson),但是我的正则表达式不正确。php/regex - 从文本中提取专有名词
文本:
我的朋友迈克尔杰克逊是流行音乐之王。游戏专辑卖得很少。
我想要什么:
一个正则表达式是能够提取的多个单词e.g迈克尔杰克逊还是游戏专辑专有名词。
我的正则表达式:
/(?<=\s)([A-Z][a-z]+).*(?=\s)/
感谢。
P.S.通过移动设备发布。道歉,如果格式不好。
尝试使用单词边界,而不是你的回顾后/超前
/\b([A-Z][a-z]+)\b/
我不明白你.*
部分,这将在第一个字到最后空格后搭配什么,所以我从我的正则表达式删除了。
如果你想一次匹配多个字(也许你对自己.*
实现这一目标?)试试这个:
(?:\s*\b([A-Z][a-z]+)\b)+
斯坦福分析器可以帮助你在这里。它将标记你的短语,并根据句子结构提取专有名词和所有其他作品。
它可以作为一个jar下载,或者你可以尝试一下在网上浏览:http://nlp.stanford.edu:8080/parser/
正则表达式不知道正确的名称是什么。你如何定义/发现它们? – sln
Michael。以防拼写对你的算法很重要。 – TARKUS