Regex 搜索多个动词,除非最后一个动词后跟逗号

Regex 搜索多个动词,除非最后一个动词后跟逗号,regex,regex-negation,regex-lookarounds,Regex,Regex Negation,Regex Lookarounds,我正在使用正则表达式搜索多个动词的集群。所有单词都标记为单词类,因此任何句子都可能如下所示: I.prn love.vrb dogs.noun 我希望正则表达式匹配两个或多个动词的所有实例,但最后一个动词后跟逗号的情况除外。请参见下面的两个首选匹配实例: I.prn have.vrb been.vrb using.vrb regex.noun # match = have.vrb been.vrb using.vrb 我当前的正则表达式看起来是这样的(我觉得这并不是最理想的): 它检查后跟

我正在使用正则表达式搜索多个动词的集群。所有单词都标记为单词类,因此任何句子都可能如下所示:

I.prn love.vrb dogs.noun
我希望正则表达式匹配两个或多个动词的所有实例,但最后一个动词后跟逗号的情况除外。请参见下面的两个首选匹配实例:

I.prn have.vrb been.vrb using.vrb regex.noun # match = have.vrb been.vrb using.vrb

我当前的正则表达式看起来是这样的(我觉得这并不是最理想的):

它检查后跟.vrb的任何单词,然后检查以.vrb结尾的单词的至少1个其他实例,中间有任意数量的空格。我希望它这样做,除非结尾有逗号,但我当前的表达式为我提供了与前一句匹配的以下内容(这不是我想要的):


有没有办法改变我的正则表达式,使其与上面的句子不匹配(即最后一个动词后跟逗号)?我希望我能很好地解释我的问题

我保存了包含以下文本的文件
text.txt

I.prn have.vrb been.vrb using.vrb regex.noun
the.det functions.noun I.prn have.vrb been.vrb using.vrb,
the.det programs.noun I.prn have.vrb been.vrb writing.vrb
然后,我运行了以下管道命令:

egrep -o '(([A-Za-z]+\.vrb[ ]*)+[A-Za-z]+\.[^v][^r][^b])|(([A-Za-z]+\.vrb[ ]*)+)$' text.txt | egrep -o '([A-Za-z]+\.vrb[ ]*)+'
并获得以下输出(根据需要):

第一个regexp获取动词链(仅空格分隔)和下面的单词(非动词),或者获取动词链(仅空格分隔),后跟eol

第二个regexp过滤掉非动词单词(如果有)


希望这有帮助。

试试:
([a-z]+\.vrb\s){2,}
,这就是你需要的吗?@L.Suurmeijer,使用pcre regex,这可能看起来像(@JulianNeuer,如果你想添加到答案中)。编辑我以前的答案以提供解决方案。谢谢@BobbleBobble谢谢你,帮了我很多忙!
the.det functions.noun I.prn have.vrb been.vrb using.vrb, .... # match = have.vrb been.vrb
I.prn have.vrb been.vrb using.vrb regex.noun
the.det functions.noun I.prn have.vrb been.vrb using.vrb,
the.det programs.noun I.prn have.vrb been.vrb writing.vrb
egrep -o '(([A-Za-z]+\.vrb[ ]*)+[A-Za-z]+\.[^v][^r][^b])|(([A-Za-z]+\.vrb[ ]*)+)$' text.txt | egrep -o '([A-Za-z]+\.vrb[ ]*)+'
have.vrb been.vrb using.vrb 
have.vrb been.vrb writing.vrb