正则表达式找到一个句子中不是第一个单词的专有名词或短语

时间:2013-10-30 18:49:33

标签: regex vb.net

我发现了几个涉及此问题的问题,但似乎没有人回答这个问题。我正在尝试构建一个正则表达式,允许我在一组文本中识别专有名词。

我正在定义一个正确的名词,如下所示:以大写字母开头的单词或单词组长度超过1位数(排除I,A等内容),并不是第一个单词新句子。

所以,在下面的文字中

“周四,Susan Dow住在假日酒店。她在酒吧里遇到了Tom和Shirley Temple,在那里他们点了绿鸡蛋和火腿”

我希望以下返回

假日酒店 星期四 汤姆 秀兰邓波尔 绿鸡蛋 火腿

现在,[A-Z]{1,1}[a-z]*([\s][A-Z]{1,1}[a-z]*)*就是我所拥有的,但除了上面列出的那些之外,还有Susan Dow和她。如何让.查找工作?

1 个答案:

答案 0 :(得分:3)

您可以使用:

(?<!^|\. |\.  )[A-Z][a-z]+

按此rubular

更新:使用交替整合两个负面外观。还添加了检查句子之间的两个空格。请注意,重复运算符不能用于http://www.regular-expressions.info/lookaround.html

中每个音符的负向lookbehinds