qregexp извлекает все числа из строки - PullRequest
0 голосов
/ 20 сентября 2018

Я вполне нормальный с регулярным выражением, все, что я хочу сделать, это получить все числа из строки.

QRegExp rx;
rx.setPattern("\\d+");
rx.indexIn("this string contains number 123 and 567*872");
QStringList MyList = rx.capturedTexts();

Ожидаемый результат - : 123 и 567 и 872. Что я получаю : 123

1 Ответ

0 голосов
/ 20 сентября 2018

Вам нужно получить все совпадения с помощью цикла, например

QRegExp rx("\\d+");
QString str = ""this string contains number 123 and 567*872"";
QStringList MyList;
int pos = 0;

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

Здесь rx.cap(0) обращается к группе 0, всему совпадению.QRegExp::indexIn пытается найти совпадение в str с позиции offset (0 по умолчанию).Если смещение -1, поиск начинается с последнего символа;если -2, рядом с последним символом;и т.д. .Хотя позиция не -1, мы можем перебирать все совпадения в строке.

...