我的代码是:
QString strExp="Sum(2+3)-Sum(5+3)";
QRegExp regexp("(Sum\\([^)]*\\))");
regexp.indexIn(strExp);
QStringList lst=regexp.capturedTexts();
qDebug()<<"CapturedCounts:"<<regexp.captureCount();
qDebug()<<lst;我获得了捕获计数为1和qstring列表调试输出,如下所示
("Sum(2+3)", "Sum(2+3)").为什么?
发布于 2016-10-12 07:05:29
QRegExp::capturedTexts()列表的第一个元素是整个匹配的字符串。
医生说:
QStringList QRegExp::capturedTexts() const返回捕获的文本字符串的列表。 列表中的第一个字符串是整个匹配的字符串。每个后续的list元素都包含一个字符串,该字符串与regexp的(捕获)子表达式相匹配。
另一个例子是:
QString s = "abcd123";
QRegExp re("(ab).*(12)");
qDebug() << "indexIn:" << re.indexIn(s);
qDebug() << "captureCount:" << re.captureCount();
qDebug() << "capturedTexts:" << re.capturedTexts();产出将是:
indexIn: 0
captureCount: 2
capturedTexts: ("abcd12", "ab", "12") 如果您想获得所有匹配,可以使用以下命令:
QString strExp="Sum(2+3)-Sum(5+3)";
QRegExp regexp("(Sum\\([^)]*\\))");
regexp.indexIn(strExp);
QStringList list;
int pos = 0;
while ((pos = regexp.indexIn(strExp, pos)) != -1) {
list << regexp.cap(1);
pos += regexp.matchedLength();
}
qDebug() << "all matches:" << list;输出:
all matches: ("Sum(2+3)", "Sum(5+3)") https://stackoverflow.com/questions/39990512
复制相似问题