在QT中使用RegEx提取两个单词之间的字符串

时间:2019-01-13 18:30:57

标签: c++ regex qt

我正在尝试使用QRegExp提取两个单词之间的字符串。例如:

<info><timestamp>54</timestamp></info><info><timestamp>67</timestamp></info>

结果:

<timestamp>54</timestamp>
<timestamp>67</timestamp>

所以我正在使用以下RegEx:

<info>.+?</info>

在使用在线RegEx测试(例如https://regexr.com(找到两个匹配项)时,此RegEx可以正常工作。

enter image description here

但是当我使用以下代码时,它在QT 5.12中不起作用:

QRegExp rx("<info>.+?</info>");
rx.setMinimal(true);
QString recXML_ = "<info><timestamp>54</timestamp></info><info><timestamp>67</timestamp></info>";

int pos = 0;
int siz = 0;
while ((pos = rx.indexIn(recXML_, pos)) != -1)
{
    pos += rx.matchedLength();
    siz += pos;
    qDebug()<<rx.capturedTexts()[0];
}

但是while条件永远不会满足。

要点: setMinimal解决方案(Find strings between two tags with regex in Qt)对我的问题不起作用。

有人知道这个问题和可能的解决方案吗?

0 个答案:

没有答案