我有字符串str。我想得到两个字符串(“+”和“-”):

QString str = "+asdf+zxcv-tyupo+qwerty-yyuu oo+llad dd ff";

// I need this two strings:
// 1. For '+': asdf,zxcv,qwerty,llad dd ff
// 2. For '-': tyupo,yyuu oo


QRegExp rx("[\\+\\-](\\w+)");
int pos = 0;

while ((pos = rx.indexIn(str, pos)) != -1) {
    qDebug() << rx.cap(0);
    pos += rx.matchedLength();
}

我需要的输出:
"+asdf"
"+zxcv"
"-tyupo"
"+qwerty"
"-yyuu oo"
"+llad dd ff"

我得到的输出:
"+asdf"
"+zxcv"
"-tyupo"
"+qwerty"
"-yyuu"
"+llad"

如果我将\\w替换为.*,则输出为:
"+asdf+zxcv-tyupo+qwerty-yyuu oo+llad dd ff"

最佳答案

您可以使用以下正则表达式:

[+-]([^-+]+)

参见regex demo

正则表达式细分:
  • [+-]-+-
  • ([^-+]+)-匹配1个或多个-+以外的其他符号的捕获组。
  • 关于c++ - Qt C++ QRegExp解析字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33630556/

    10-09 00:19