我有一个看起来像这样的文件:
useless stuff
fruit: apple
fruit: banana
useless stuff
fruit: kiwi
fruit: orange
fruit: pear
useless stuff
这个想法是按照它们出现的顺序和分组来捕获所有水果名称。对于上面的示例,输出必须类似于:
[['apple', 'banana'], ['kiwi', 'orange', 'pear']]
我通过遍历多行 regexp 的所有匹配项来成功地做到这一点,'^fruit: (.+)$'
如果发现它们的行彼此跟随,则将水果名称添加到相同的给定列表中。
但是,这对于对水果名称进行替换是不切实际的(跟踪匹配开始和结束索引成为强制性的),所以我更愿意在单个正则表达式中执行此操作。
我试过这个:
re.findall(r'(?:^fruit: (.+)$\n)+', thetext, re.M)
但它只返回一行。
我哪里错了?