正则表达式:捕获前面没有任何内容的大写单词

Regex: capturing capital word with nothing in front of it

我正在尝试匹配某些给定文本中的所有专有名词。

到目前为止,我得到了 (?<![.?!]\s|^)(?<!\“)[A-Z][a-z]+,它忽略了以 .?! 和 space 开头的大写单词以及括号内的单词。可见here.

但它不会捕捉句子开头的大写单词。所以给定文本:

Alec, Prince, so Genoa and Lucca are now just family estates of the “What”. He said no. He, being the Prince.

它成功抓住了 Prince、Genoa、Lucca 但没有抓住 Alec。

因此,如果可能的话,我希望得到一些帮助来修改它,以匹配后面没有任何内容的任何大写单词。 (我不确定如何定义任何内容)

您要查找的东西称为“单词边界”,在许多正则表达式语言中表示为 \b

尝试\b[A-Z][a-z]*\b

您可以将 作为第二个替代项放在后视中,而不是 ^ 断言字符串的开头。

那你可以省略(?<!\“)

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

说明

  • (?<! 负向后视,如果当前位置不是,则断言直接向左的内容
    • [.?!]\s 匹配任何 . ? ! 后跟一个空白字符
    • |
    • 字面匹配
  • ) 关闭回顾
  • [A-Z][a-z]+ 匹配一个大写字符 A-Z 和 1+ 个字符 a-z

看到一个regex demo.