Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex QT QRegularExpression不匹配_Regex_Qt - Fatal编程技术网

Regex QT QRegularExpression不匹配

Regex QT QRegularExpression不匹配,regex,qt,Regex,Qt,我的代码是: QRegularExpression reg("^(.*) .*"); QString match = reg.match("help a").captured(1); 当我在一个在线的正则表达式测试网站上运行它时,它应该可以工作,并且也可以检查出来。我错过什么了吗? 编辑:我尝试从模式中删除“^”,效果很好。该RE中没有捕获的组1。捕获组的索引为零,因此,如果需要帮助,应使用: QRegularExpression reg("^(.*) .*"); reg.match("h

我的代码是:

QRegularExpression reg("^(.*) .*"); 
QString match = reg.match("help a").captured(1);
当我在一个在线的正则表达式测试网站上运行它时,它应该可以工作,并且也可以检查出来。我错过什么了吗?
编辑:我尝试从模式中删除“^”,效果很好。

该RE中没有捕获的组1。捕获组的索引为零,因此,如果需要帮助,应使用:

QRegularExpression reg("^(.*) .*"); 
reg.match("help a").captured(0);
//                           ^
如果需要a,应更改RE以捕获它:

//                            v  v
QRegularExpression reg("^(.*) (.*)");   // "^.* (.*)" if you don't want 'help'
reg.match("help a").captured(1);        // 0          if you don't want 'help'
当然,在尝试使用任何匹配项之前,您可能应该检查以确保它匹配。这可以通过QRegularExpressionMatch::hasMatch函数完成

捕获定义为除空格以外的任何字符集的第一个单词的更好方法可能是明确允许:

^ *([^ ]*)

如果在第一个单词后面有多个空格,并且在单词前面也有空格,那么这样做会更好。

请提供一个完整的程序来说明这个问题。目前,我们不知道你是如何证明它不起作用的。具体来说,match返回一个QRegularExpressionMatch对象,您需要查询该对象以查看它是否匹配。当我打印或调试它时,match为空。这是整个不起作用的部分,我试着将其隔离。k.S,这样更好,现在我们可以看到问题所在:-我实际上试图捕获帮助,但如果没有尾随空间,我无法捕获它。我尝试了一些方法,但忘记将捕获的索引更改为0。如果可以,请提供帮助。@k.S,除非该空间在捕获组内或有多个空间,否则您不会捕获该空间。如果要确保没有尾随空格,请使用^[^]*。[^]是字符类而不是空格。