【发布时间】:2016-03-31 15:01:17
【问题描述】:
在以下带有 POS 标记的句子(和类似句子)中,使用什么正则表达式来仅捕获两个词的名词名词复合词(即\p{Alnum}+_NN[PS]? \p{Alnum}[PS]?)并避免捕获作为较大短语一部分的两个词匹配。
I_PRP will_MD never_RB go_VB to_IN sun_NN devil_NN auto_NN again_RB but_CC my_PRP$ family_NN members_NNS will_MD ._.
我特别想捕获family_NN members_NN,而不是sun_NN devil_NN 和devil_NN auto_NN。
目前,我使用以下正则表达式和积极的前瞻:
"(?=\\b([\\p{Alnum}]+)_(NN[SP]?)\\s([\\p{Alnum}]+)_(NN[SP]?)\\b)."
除了family_NN members_NNS 之外,问题还在于它捕获了sun_NN devil_NN、devil_NN auto_NN。
【问题讨论】:
-
如何使用this trick 消耗较大的部分但捕获较小的部分like in this demo(单击“Java”)或regex101 demo(非Java)。