我需要在Python中从一个文件中提取一些数据。它的结构如下:
.I 1
.T
some multiline text
.A
some multiline text
.B
some multiline text
.W
some multiline text
.I 2
.T
some multiline text
.A
some multiline text
.B
some multiline text
.W
some multiline text
你看到了,有一些重复的模式。我需要逐个提取它们。这是我的正则表达式:
\.I\s(\d*)\n # .I section
\.T\n([\d\D]*?) # .T section
\.A\n([\d\D]*?) # .A section
\.B\n([\d\D]*?) # .B section
\.W\n([\d\D]*) # .W section
(?=\.I\s+\d+) # look ahead section, which behaves greedy
一切都很好,但最后一个部分(lookahead)是贪婪的。我需要一个非贪婪的lookahead正则表达式,但我找不到它。
我们可以使用*? +?{m,n}?应用非贪婪行为,但我无法找到这样的语法来使用(?=...)。
当我使用这个正则表达式搜索匹配项时,它只找到一个匹配项,而实际上有两个。这是因为lookahead运算符的贪婪性质。如何使用非贪婪的lookahead呢?
\.W\n([\d\D]*?)
吗? - Julien Spronck