QRegExp - 如何在两个HTML标记之间获取特定文本

时间:2014-07-27 19:38:51

标签: c++ qt qregexp

我想在" Qt / C ++ "中提取以下HTML代码中的一些文字。使用QRegExp

<TABLE border="0" width="99%">
  <COLGROUP><COL width="100"><COL>
  <TR>
    <TD align="center" valign="middle" bgcolor="#EEEEFF"><B> MCT-to-KR</B>
    <TD align="center" valign="middle" bgcolor="#EEEEFF"><FONT class="result">THIS IS THE TEXT WHICH I WANT TO FETCH</FONT>
  <TR>
    <TD align="center" valign="middle" bgcolor="#DDDDEE">Normalized
    <TD align="center" valign="middle" bgcolor="#DDDDEE">[AL-LYA-A]
  <TR>
    <TD align="center" valign="middle" bgcolor="#CCCCDD">Web Unicode
    <TD align="center" valign="middle" bgcolor="#CCCCDD">ANOTHER TEXT I MIGHT BE INTERESTED IN, BUT WOULD BE EASY TO GET IF THE FIRST IS DONE
</TABLE>

C#.Net 中,我可以这样做:

private Regex txtExtractor = new Regex(@"<FONT class=""result"">(.*?)</FONT>");

我用QRegExp累了,但没有用,所以我应该如何编辑才能使其正常工作?

1 个答案:

答案 0 :(得分:2)

使用QRegEx(Qt 4和Qt 5)

QRegExp regex("<FONT class=\"result\">(.*)</FONT>");
regex.indexIn(html);
QString textYouWant = regex.cap(1);

使用QRegularExpression(Qt 5)

QRegularExpression regex("<FONT class=\"result\">(.*)</FONT>");
QRegularExpressionMatch match = regex.match(html);
QString textYouWant = match.captured(1);

如果您使用Qt 5,我建议您使用QRegularExpression。它的API更好一点。