我正在尝试在已知模式的HTML页面中找到一个字符串。 例如,在以下HTML代码中:
<TABLE WIDTH="100%">
<TR><TD ALIGN="LEFT" width="50%"> </TD>
<TD ALIGN=RIGHT VALIGN=BOTTOM WIDTH=50%><FONT SIZE=-1>( <STRONG>1</STRONG></FONT> <FONT SIZE=-2>of</FONT> <STRONG><FONT SIZE=-1>1</STRONG> )</FONT></TD></TR></TABLE>
<HR>
<TABLE WIDTH="100%">
<TR> <TD ALIGN="LEFT" WIDTH="50%"><B>String 1</B></TD>
<TD ALIGN="RIGHT" WIDTH="50%"><B><A Name=h1 HREF=#h0></A><A HREF=#h2></A><B><I></I></B>String</B></TD>
</TR>
<TR><TD ALIGN="LEFT" WIDTH="50%"><b>String 2.</B>
</TD>
<TD ALIGN="RIGHT" WIDTH="50%"> <B>
String 3
</B></TD>
</TR>
</TABLE>
<HR>
<font size="+1">String 4</font><BR>
...
我想找到 String 4 ,我知道它总会在
之间 <HR><font size="+1">
和</font><BR>
如何使用RE搜索字符串?
编辑:
我尝试了以下内容,但没有成功:
p = re.match('<HR><font size="+1">(.*?)</font><BR>',html)
感谢。
答案 0 :(得分:3)
re.findall(r'<HR>\s*<font size="\+1">(.*?)</font><BR>', html, re.DOTALL)
findall
返回一个列表,其中包含正则表达式括号中捕获的所有内容。我使用了re.DOTALL,因此点也捕获了行尾。
我使用\s*
,因为我不确定是否会有空格。
答案 1 :(得分:2)
这可行,但可能不太健壮:
import re
r = re.compile('<HR>\s?<font size="\+1">(.+?)</font>\s?<BR>', re.IGNORECASE)
r.findall(html)
最好使用正确的HTML解析器。 BeautifulSoup非常好用且易于使用。仔细看看。
答案 2 :(得分:0)
re.findall(r'<HR>\n<font size="\+1">([^<]*)<\/font><BR>', html, re.MULTILINE)