捕获符合正则表达式的所有名称

时间:2018-01-25 15:09:09

标签: regex

我试图捕获以大写字母开头的所有单词,一个接一个地在Inc单词之前。例如,要从整行Test Alphabet中捕获Parent company Test Alphabet Inc. announced。我做了一个正则表达式模式:

([A-Z]{1}[a-z]+)+

以所有以大写字母开头的单词。但它抓住Parent,这是不需要的。当我试图以这种方式限制条件时:

([A-Z]{1}[a-z]+)+ (?=(Inc))

只需Alphabet,并且不会抓取所需的Test字词。 请帮助我理解如何抓住所有以大写字母开头并且在Inc字之前的单词? 提前谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用此前瞻性正则表达式来匹配:

[A-Z][a-zA-Z]*(?=\s*(?:[A-Z][a-zA-Z]*\s+)*Inc\.)

RegEx Demo

  • [A-Z][a-zA-Z]*匹配以大写字母
  • 开头的单词
  • (?=...)内的前瞻表达式确保我们在当前单词之前有0个或更多大写单词后跟Inc.

答案 1 :(得分:0)

尝试

((?:[A-Z]\w*\s*)*\s?)(?=\sInc)

它将公司名称捕获为一个组。使用\w作为名称中允许的字符需要一个快捷方式。这意味着名称可以是大写和小写字母的混合,以及_。如果这是不受欢迎的行为,请将\w更改为[a-z]仅针对小写字母,或[A-Za-z]针对混合的大小写字母。

See it here at regex101.