如果我有一堆文字,那就说HTML,但不一定非。
</TD>
<TD CLASS='statusEven'><TABLE BORDER=0 WIDTH='100%' CELLSPACING=0 CELLPADDING=0><TR><TD ALIGN=LEFT><TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
<TR>
<TD ALIGN=LEFT valign=center CLASS='statusEven'><A HREF='extinfo.cgi? type=2&host=localhost&service=Current+Load'>Current Load</A></TD></TR>
</TABLE>
</TD>
<TD ALIGN=RIGHT CLASS='statusEven'>
<TABLE BORDER=0 cellspacing=0 cellpadding=0>
<TR>
</TR>
</TABLE>
</TD>
</TR></TABLE></TD>
<TD CLASS='statusOK'>OK</TD>
<TD CLASS='statusEven' nowrap>08-04-2011 22:07:00</TD>
<TD CLASS='statusEven' nowrap>28d 13h 18m 11s</TD>
<TD CLASS='statusEven'>1/1</TD>
<TD CLASS='statusEven' valign='center'>OK - load average: 0.01, 0.04, 0.05 </TD>
我想抓住2个标记之间的所有内容,结果可能是多行,我该怎么做?
这是我到目前为止所拥有的......
Pattern p = Pattern.compile("extinfo(.*)load average");
Matcher m = p.matcher(this.resultHTML);
if(m.find())
{
return m.group(1);
}
答案 0 :(得分:10)
使用(?s)
开关:
Pattern p = Pattern.compile("(?s)extinfo(.*?)load average")
此开关为正则表达式的其余部分打开“点匹配换行符”,这意味着它基本上将整个输入视为“一行”(换行符只是另一个字符)。
如果没有此开关,图案将不会在换行边界上匹配。
此外,你的正则表达式是“贪婪的”,所以我在捕获中添加了?
以使其“不贪婪”,这意味着它将捕获到足以进行匹配,但不会更多。