我有字符串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/