5

我发现了几个与此相关的问题,但似乎没有一个可以回答。我正在尝试构建一个正则表达式,它可以让我在一组文本中识别专有名词。

我将专有名词定义如下:以大写字母开头的单词或一组单词,长度超过 1 位(不包括 I、A 等),并且不是新句子的第一个单词。

所以,在下面的文字中

“周四,苏珊·道住在假日酒店。她在酒吧遇到了汤姆和雪莉·坦普尔,他们在那里点了绿鸡蛋和火腿”

我希望返回以下内容

星期四汤姆雪莉寺绿蛋火腿假日酒店

现在,[A-Z]{1,1}[a-z]*([\s][A-Z]{1,1}[a-z]*)*这就是我所拥有的,但除了上面列出的之外,它还返回了 Susan Dow 和她。我怎样才能让我.的查找工作?

4

1 回答 1

3

您可以使用:

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

按照这个规则

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

于 2013-10-30T18:59:15.270 回答