如何正确捕捉两个图案之间的多条线

问题描述 投票:-1回答:1

我有一个html文件,我正在尝试搜索一个模式,当我找到它时,打印设置的模式之间的所有行。在我的情况下,“ pre和/ pre”之间的所有内容都包含茎循环序列。我的目标是对大量html文件进行排序,并提取出这些结构并将它们放在列表中,该列表可以像出现在html文件中一样打印出来。我无法正确捕获所有行并正确打印它们,就像出现在图片中一样。目前我只打印两行,pre cugcaggcagaaguggggcugaca / pre和pre ccucaccaccccuucugccugca / pre

为什么不捕获图案中的所有内容并正确打印?它跳过了span和span类。.我不确定我是否正确解决了这个问题-是否有更好的方法来考虑这一点?谢谢

fh_html = open("filename").readlines()
for line in fh_html:

    match_obj = re.search(r'<pre>.*</pre>', line, re.DOTALL)
    print(match_obj.group(0))

这是html代码在页面上的外观:enter image description here\这是代码的样子:

<pre>ggggc             <span class="sld">u</span>   - <span class="sld">c</span>   <span class="sld">ca</span>    agag 
     <span class="sld">cugcaggcagaag</span> <span class="sld">ggg</span> <span class="sld">g</span> <span class="sld">uga</span>  gggc    g
     ||||||||||||| ||| | |||  ||||     
     g<span class="sld">acguccgucuuc</span> <span class="sld">ccc</span> <span class="sld">c</span> <span class="sld">acu</span>  cccg    g
-----             -   <span class="sld">a</span> <span class="sld">c</span>   <span class="sld">cc</span>    cguu </pre>

这是代码:

python regex html-parsing
1个回答
0
投票

您将每一行传递给正则表达式,而不是整个文本。

尝试一下:

text = open("filename").read()
match_obj = re.search(r'<pre>.*</pre>', text, re.DOTALL)
print(match_obj.group(0))
© www.soinside.com 2019 - 2024. All rights reserved.