<p>我有一个字符串列表,我想用正则表达式过滤。我有了一个解决方案的开端:</p>
<pre><code>lines = ['Some data', 'Data of interest', 'Some data', 'Data of Interest', 'Some data', 'Data of interest']
r = re.compile(r'.*[iI]nterest.*')
relevant_lines = [r.findall(line) for line in lines]
print(relevant_lines)
</code></pre>
<p>…这几乎奏效了:</p>
^{pr2}$
<p>…但是有没有办法只使用匹配的行而不使用嵌套列表填充结果列表?在</p>
<p><strong>编辑-有没有比下面更干净的方法?</strong></p>
<pre><code>[r[0] for r in [r.findall(line) for line in lines] if len(r) > 0]
</code></pre>
<pre><code>relevant_lines = [m.group(0) for m in map(r.match, lines) if m is not None]
</code></pre>
<p>以下是控制台中的结果:</p>
^{pr2}$
<p>事情并不复杂。将函数式编程与生成器结合起来是非常好的。在</p>