【发布时间】:2021-12-28 09:36:31
【问题描述】:
我有以下文字:(这与this密切相关但不相似)
text = '7\n\x0c\n7.\tA B C\n\n7.1\tbla bla bla .\n\n7.2\tanother bla bla \n\n7.3\tand another one.\n\n8.\tX Y Z\n\n8.1\tha ha ha \n\n(a)\thohoho ;\n\n(b)\thihihi,\n\n8'
我希望只选择第 7 节,以便获得:
7. A B C
7.1 bla bla bla .
7.2 another bla bla
7.3 and another one.
所以我这样做:
print(re.findall(r'^\d+\.\s*A B C[^\S\n]*(?:\n\n.+)*', text, re.M)[0])
给出:
7. A B C
7.1 bla bla bla .
7.2 another bla bla
7.3 and another one.
8. X Y Z
8.1 ha ha ha
(a) hohoho ;
(b) hihihi,
8
如您所见,8 在8.1 之后。所以这似乎对正则表达式感到困惑,我想知道在这种情况下我能做什么?
请注意,部分的数量通常可以不同,所以我不能做类似的事情
re.findall(r'^7\..*', text, re.MULTILINE)(即A B C可以放在其他部分)。
【问题讨论】: