我的正则表达式出了什么问题?根据计划,应该有两个要素,但只定义了第一个要素。Qt5.12最小GW32 Windows 7x86。
QRegExp rx("\d+");
QString buf_last;
buf_last.append("read0_1");
rx.indexIn(buf_last);
auto try_step = rx.cap(0).toInt();
auto current_step = rx.cap(1).toInt();
qDebug() << try_step << current_step << buf_last << "rx___" << rx.cap(0)
<< rx.cap(1) << rx.capturedTexts();
错误报告
这里没有错误,这一切都取决于文档和RE的一般工作方式。
如果您试图使用QRegExp
查找字符串中的每个数字,则必须循环。一种方法是:
int main(int , char **)
{
QRegExp rx("\d+");
QString buf_last("read0_1");
int idx = 0;
do {
idx = rx.indexIn(buf_last, idx);
if (idx < 0)
break;
qDebug() << rx.cap(0);
idx += rx.cap(0).length();
} while (idx < buf_last.length());
return 0;
}
"0"
"1"
这只是一种方式,尤其是循环的实际代码样式。根据您的需要,使用QRegularExpression
可能会更有效率。但是,要找到任意数量的数字,就需要在某个地方进行循环。