В проекте, над которым я работаю, мне нужно сделать QStringList
из QRegExp
захватывает за исключением для 2 из них: 1-й и один из других, в зависимости от некоторых других параметров.Какое использование QRegExp :: pos() без соответствующего QRegExp :: len() рода?
Простым подходом было бы использовать QRegExp::capturedTexts()
, а затем удалить из возвращенного списка два ненужных элемента. Это, однако, подразумевает, что два QStrings
и связанные с ними QList
узлы должны быть распределены только для того, чтобы быть убраны без реального использования, что кажется расточительным.
Я тогда подумал, что просто построю QStringList
сам один захваченный текст вовремя, через QRegExp::cap()
. Но QRegExp::cap()
- itself implemented in terms ofQRegExp::capturedTexts()
, что сделало бы мой код забавным, по крайней мере.
Так что я посмотрел на API и нашел довольно удобный QRegExp::pos()
метод, который, в документации говорится, «Возвращает позицию го захваченного текста в искомом строке.»
Очень аккуратно, я думал , Я мог бы использовать QString::mid()
и сам построить QStringList
. Это what the actual implementation из QRegExp::capturedTexts()
does, в конце концов.
За исключением того, что я не знаю, как получить n-й захваченный текст длина, который мне нужно извлечь захваченный текст с помощью QString::mid()
. Действительно, позиция и длина любого из захваченных текстов хранятся один рядом с другим, как can be seen в QRegExp::pos()
implementation, но нет никакой информации об объекте информации, если я не ошибаюсь, случай, за который я извиняюсь авансовый. :)
Итак, вот мой вопрос: если я прав, и нет способа получить какую-либо длину захваченного текста, какой вариант использования имеет QRegExp::pos()
? Я не могу представить ни одной ситуации, в которой я хотел бы знать, где начинается захваченный текст, не имея возможности получить его.
__
PS. Qt5 QRegularExpressionMatch
класс предоставляет методы capturedStart()
и capturedEnd()
, которые заполняют эту пустоту, но я застрял с Qt4.8.6.
Это то, что я собираюсь делать, конечно, но мне было любопытно, что может использовать «QRegExp :: pos()», чего я не могу себе представить. –