В этом 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()
.
Возможно, 1016 *, что лучший способ перехватить первое слово (определяемое любым набором символов, кроме пробела) - это явно разрешить это:
^ *([^ ]*)
Это будет работать лучше, если у вас есть несколько пробелов после первого слова, а также допускаются пробелы перед словом.