在过去的几天里,我正在处理正则表达式。所以,让我们说我有一个文本
text = '
1. sometext sometext sometext given as follows:
«book one
title here
part one
1. mpla mpla mpla
2. some text some text «here spesific text»
book two
1. some text some text.
2. «also» try this in case of emergency.»
book three
part three
directions to home'
我想找到'«'和'»'之间的所有书籍。用“章节”这个词改变它并获得文本。通过使用正则表达式,我无法得到我想要的结果,因为据我所知,正则表达式不是计算到目前为止已经通过了多少'''的最佳解决方案。
例如 如果我使用
print re.findall(r'«([book\s\S+]*?)»', data, re.DOTALL)
我只收到第一个'»'之前的文字。有没有办法拿到第一本书并预订两本书?
我也试过这个:
print re.findall(r'(?<=«)(?=(book\s\S+))|(?=[^«]*»)(?=(book\s\S+))',data, re.DOTALL)
但不起作用。有没有办法获得结果,还是我应该使用正则表达式以外的其他方法?
答案 0 :(得分:0)
一种解决方案是按以下两部分执行此操作:
print re.findall(r"(book\s\S+)", re.search("«(.*)»", text, re.S).group(1), re.S)
首先找到外部« »
,然后在其中搜索图书。
这给出了以下输出:
['book one', 'book two']