QRegExp - Как получить конкретный текст между двумя HTML-тегами

Я хочу извлечь некоторый текст из следующего HTML-кода в "Qt/C++", используя 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, но он не работал, так как мне его отредактировать, чтобы он работал?


person Alaa Elrifaie    schedule 27.07.2014    source источник


Ответы (1)


Использование 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);

Я рекомендую использовать QRegularExpression, если вы используете Qt 5. Его API немного лучше.

person RA.    schedule 27.07.2014