我有一个正则表达式的小问题。
我想在文本中找到所有“文章”的内容。
两篇文章之间可能会有一个“章节”,但目前我没有通过。
这是我的文字(没有\ n):
第1章假单胞菌的坐骨,第1条马鞭草,
varius a,semper congue,euismod non,mi。 Proin porttitor第2章Duis
脚踏车第2条普罗旺斯式的书本和电子书第3条
sed dui ut augue blandit sodales。初产VEstibulum ante ipsum
洋紫荆和乌贼
要获得多个匹配,我想我必须使用findall()。
但是我的小正则表达式不起作用:
re.findall(r"""Article\s(?P<number>\d+)(?P<content>.*)""",content,re.UNICODE)
内容参数获取我所有的文字。我想是因为那里。*
那么正则表达式如何在我的文本中多次匹配?
我不必使用findall()或我的正则表达式无效?
因此,如果有人有想法,
谢谢。
附:我只想通过使用正则表达式来做到这一点。
最佳答案
您需要吞下所有内容,直到找到Article\s
或输入结束。可以使用惰性量词,再进行正向超前测试来完成此操作:
re.findall(r"""Article\s(?P<number>\d+)(?P<content>.*?)(?=Article\s|$)""",content,re.UNICODE)
另一个解决方案是对
Article\s
进行拆分,但是您需要丢弃第一个拆分的组。然后,除第一组外的每个拆分组都将服从:^(?P<number>\d+)(?P<content>.*)$