Первый элемент списка QRegExp::capturedTexts()
- это вся строка со строкой.
The doc говорит:
QStringList QRegExp::capturedTexts() const
Возвращает список захваченных текстовых строк.
Первой строкой в списке является вся согласованная строка. Каждый последующий элемент списка содержит строку, которая соответствует подвыражению (захват) регулярного выражения.
Другой пример:
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)")
in My examble, Как можно извлечь эти типы в Qt –
* что типы выражений –
Я не понимаю ваш вопрос. – hank