我试图捕获以大写字母开头的所有单词,一个接一个地在Inc
单词之前。例如,要从整行Test Alphabet
中捕获Parent company Test Alphabet Inc. announced
。我做了一个正则表达式模式:
([A-Z]{1}[a-z]+)+
以所有以大写字母开头的单词。但它抓住Parent
,这是不需要的。当我试图以这种方式限制条件时:
([A-Z]{1}[a-z]+)+ (?=(Inc))
只需Alphabet
,并且不会抓取所需的Test
字词。
请帮助我理解如何抓住所有以大写字母开头并且在Inc
字之前的单词?
提前谢谢!
答案 0 :(得分:0)
您可以使用此前瞻性正则表达式来匹配:
[A-Z][a-zA-Z]*(?=\s*(?:[A-Z][a-zA-Z]*\s+)*Inc\.)
[A-Z][a-zA-Z]*
匹配以大写字母(?=...)
内的前瞻表达式确保我们在当前单词之前有0个或更多大写单词后跟Inc.
。答案 1 :(得分:0)
尝试
((?:[A-Z]\w*\s*)*\s?)(?=\sInc)
它将公司名称捕获为一个组。使用\w
作为名称中允许的字符需要一个快捷方式。这意味着名称可以是大写和小写字母的混合,以及_
。如果这是不受欢迎的行为,请将\w
更改为[a-z]
仅针对小写字母,或[A-Za-z]
针对混合的大小写字母。