我发现了几个涉及此问题的问题,但似乎没有人回答这个问题。我正在尝试构建一个正则表达式,允许我在一组文本中识别专有名词。
我正在定义一个正确的名词,如下所示:以大写字母开头的单词或单词组长度超过1位数(排除I,A等内容),并不是第一个单词新句子。
所以,在下面的文字中
“周四,Susan Dow住在假日酒店。她在酒吧里遇到了Tom和Shirley Temple,在那里他们点了绿鸡蛋和火腿”我希望以下返回
假日酒店 星期四 汤姆 秀兰邓波尔 绿鸡蛋 火腿
现在,[A-Z]{1,1}[a-z]*([\s][A-Z]{1,1}[a-z]*)*
就是我所拥有的,但除了上面列出的那些之外,还有Susan Dow和她。如何让.
查找工作?
答案 0 :(得分:3)
您可以使用:
(?<!^|\. |\. )[A-Z][a-z]+
按此rubular
更新:使用交替整合两个负面外观。还添加了检查句子之间的两个空格。请注意,重复运算符不能用于http://www.regular-expressions.info/lookaround.html
中每个音符的负向lookbehinds