我正在尝试举一个使用正向先行断言而非捕获组无法胜任的例子,以进一步了解它们的用法。我提出的所有示例都可以使用非捕获组,因此我感觉没有完全掌握正向先行断言的用法。
以下是一个字符串(摘自SO示例),其中答案中使用了正向先行断言。用户想要仅在第一列的值以ABC开头并且最后一列具有“active”值时抓取第二列的值。
string ='''ABC1 1.1.1.1 20151118 active
ABC2 2.2.2.2 20151118 inactive
xxx x.x.x.x xxxxxxxx active'''
给出的解决方案使用了“正向先行断言”,但我注意到我可以使用非捕获组得出相同的答案。因此,我很难想出一个正向先行不起作用,非捕获组可以工作的示例。pattern =re.compile('ABC\w\s+(\S+)\s+(?=\S+\s+active)') #solution
pattern =re.compile('ABC\w\s+(\S+)\s+(?:\S+\s+active)') #solution w/out lookaround
如果有人能够提供一个例子,我会非常感激。
谢谢。