我的代码是:
QRegularExpression reg("^(.*) .*");
QString match = reg.match("help a").captured(1);
这应该可以工作,也可以在我在在线正则表达式测试网站中运行它时进行检查。我想念什么吗? 编辑:我尝试从模式中删除'^',并且有效。
答案 0 :(得分:1)
该RE中没有捕获的组1
。捕获组的索引为零,因此,如果要使用help
,则应使用:
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()
函数来完成。
可能是捕获第一个单词(定义为除空格以外的任何字符集)的更好方法是显式允许这样做:
^ *([^ ]*)
如果您在第一个单词之后有多个空格,并且在该单词之前也留有空格,这样做会更好。