我正試圖讓一些文字被<td>
標籤包圍。我的問題是,我能夠僅獲取第一個結果,並且無法獲取其他結果。Qt/QRegularExpression - 無法捕獲所有結果,只有第一個實例,爲什麼?
從下面的HTML,我只得到第一個結果是這樣的文字:
學生姓名
但所有其他試圖捕捉到所需的文本的其餘部分是空的,空。爲什麼那&我做錯了什麼?
文本的正則表達式來工作:
<table width="52%" border="1" align="center" cellpadding="1" cellspacing="1">
<tr>
<td colspan="2" align="center" bgcolor="#999999">Result</td>
</tr>
<tr>
<td width="22%"><strong>Student ID</strong></td>
<td width="78%">13/0003337/99</td>
</tr>
<tr>
<td><strong>Student Name</strong></td>
<td>Alaa Salah Yousuf Omer</td>
</tr>
<tr>
<td><strong>College</strong></td>
<td>Medicine & General Surgery</td>
</tr>
<tr>
<td><strong>Subspecialty</strong></td>
<td>General</td>
</tr>
<tr>
<td><strong>Semester</strong></td>
<td>Fourth</td>
</tr>
<tr>
<td><strong>State</strong></td>
<td>Pass</td>
</tr>
<tr>
<td><strong>Semester's GPA</strong></td>
<td>2.89</td>
</tr>
<tr>
<td><strong>Overall GPA</strong></td>
<td>3.13</td>
</tr>
</table>
我的代碼:
QString resultHTML = "A variable containing the html code written above."
QRegularExpression regex("<td>(.*)</td>", QRegularExpression::MultilineOption);
QRegularExpressionMatch match = regex.match(resultHTML);
// I only get the 1st result logged withing debugger
for(int x = 0; x <= match.capturedLength(); x++)
{
qDebug() << match.captured(x);
}
// This here doesn't get me anything, null!
_studentName = match.captured(2);
_semesterWritten = match.captured(8);
_stateWritten = match.captured(10);
_currentGPA = match.captured(12);
_overallGPA = match.captured(14);
請不要通過解析HTML使用正則表達式! – peppe
@peppe當然可以,但使用少量數據時,我只是希望儘可能簡單。 –