擅长:python、mysql、java
<p>这个解决方案在Pyton 2.7.10的MacAir中试用过。它应该足够接近Windows10上的Python2.7。在</p>
<p>解决方案:</p>
<pre><code>with open('data.txt', 'r') as myfile:
data=myfile.read()
import re
p = re.compile('(\d{2}\.\d{2}\.\d{4} \d{2}:\d{2}:\d{2},(?s).*?)(?=\n\d{2}\.\d{2}\.\d{4} \d{2}:\d{2}:\d{2},|$)')
l = p.findall(data)
</code></pre>
<p>结果:</p>
^{pr2}$
<p>详细信息:</p>
<p>首先,数据.txt包含您的数据,并将其作为字符串读入名为<code>data</code>的变量中。正则表达式:</p>
<pre><code>(\d{2}\.\d{2}\.\d{4} \d{2}:\d{2}:\d{2},(?s).*?)(?=\n\d{2}\.\d{2}\.\d{4} \d{2}:\d{2}:\d{2},|$)
</code></pre>
<p>已编译。<code>(?s)</code>用<code>s</code>,DOTALL,标志匹配模式的其余部分,这使得<code>.</code>匹配任何字符,包括换行符。该正则表达式与您尝试的非常相似,只是它在<code>*</code>后面使用<code>?</code>使其成为非gree。另外,它使用<code>|</code>使<code>$</code>(字符串的结尾)成为匹配的另一个结尾。在</p>
<p>最后,<code>findall()</code>用于查找重新匹配的所有子字符串,并将它们作为列表返回。在</p>
<p>编辑:我在正则表达式中添加了一个<code>\n</code>,新行,字符,就在“积极展望”之后,<code>?=</code>,以便从结果中消除消息之间的空行。这是来自@lenik的评论的结果,这样我的结果将与你的“类似这样的事情:”列表完全匹配。在</p>
<p>另外,我在bashshell上执行时删除了输出,因为它不是必需的,特别是因为您使用的是windows10。在</p>