如何在字符串中找到合适的名词?

Mik*_*ike 2 php

我试图在用户提交的3-4句段中识别专有名词.我有一个有缺陷的功能,因为我有一个主持人团队验证几乎所有东西.

传入段落的示例如下.

尼克斯威舍本垒打詹姆斯盾加键的五奔跑在第一局和纽约洋基队爆出在周二晚上击败坦帕湾8-3,在美联东区在光芒打开一个2 1/2游戏领先.

我希望函数能够使用以下关键字/专有名词.

Nick Swisher,James Shields,纽约洋基队,坦帕湾,Rays,AL East

我想我可以爆炸字符串并用空格分隔单词.然后我会检查每个单词,看看第一个字母是否大写.如果是,请退货.如果没有,请转到下一个单词.

但是多字关键词/专有名词呢?如何在已找到的第一个字母加盖字后检查单词的功能?

所以该功能会找到尼克,但我怎么告诉它检查下一个字呢?因此,检查下一个是否有上限,如果是,请返回Nick Swisher.如果没有,就回到尼克身边.

更进一步,如果这是一个3字的短语怎么办?找到新的,约克被发现,我如何才能找到洋基队呢?

Han*_*nes 6

尝试像theese一样的正则表达式:

[A-Z]{1,1}[a-z]*([\s][A-Z]{1,1}[a-z]*)*
Run Code Online (Sandbox Code Playgroud)

但请务必检查区分大小写

  • {1,1}感觉没必要,特别是因为它是默认的,如果没有了.它也不会正确地匹配"AL East",但重复声明是一个好主意,而不是我的解决方案,捕捉结束空格/点/等. (2认同)