我正在尝试在回调函数中将字符串与QRegExp匹配。我正在使用C++Qt实现。我已经编写了以下形式的正则表达式:Atmospheres.(\\d+).(latitude|longitude|radius|path)并对其进行了验证here

问题是,将正则表达式与QRegExp匹配总是返回-1,这是不匹配的。

这是一些代码:

QString name = "Atmospheres.1.latitude";
QRegExp regex("Atmospheres.(\\d+).(latitude|longitude|radius|path)");

int pos = 0;
regex.indexIn(name, pos);

上面的行始终返回-1。有什么建议么?谢谢。

最佳答案

您确定您正在运行此确切的代码吗?这对我来说可以:

#include <iostream>
#include <QString>
#include <QRegExp>

int main()
{
  QString name = "Atmospheres.1.latitude";
  QRegExp regex("Atmospheres.(\\d+).(latitude|longitude|radius|path)");
  int pos = regex.indexIn(name, 0);
  std::cerr << QT_VERSION_STR << ": " << pos << std::endl;
  return 0;
}

执行此操作将产生:
5.2.0: 0

09-05 19:08