Я хочу, чтобы отфильтровать ${...}
с QRegExp
, таким образом, что он Retuns в QStringList
всех выбранных элементов:Текст фильтра с QRegExp
"$ {NAME}" < < "$ {DAY}" < < "$ {MEH}" < < "$ {MEH}" < < "$ {MEH}"
но почему-то не работает:
QString text = "Hello ${NAME} \
How is your ${DAY} so? \
Bye, ${MEH} ${MEH}\
${MEH}";
// Regex: /(\${.*})/g
QRegExp rx("/(\\${.*})/g");
QStringList list;
int pos = 0;
while ((pos = rx.indexIn(text, pos)) != -1) {
QString val = rx.cap(1);
list << val;
qDebug() << "Val: " << val;
pos += rx.matchedLength();
}
Нет вывода вообще? Что я делаю неправильно?
Update:
QRegularExpression
работает, но только на каждой линии, а не на въезде уровне. Идеи?
QString text = "Hello ${NAME} \
How is your ${DAY} so? \
Bye, ${MEH} ${MEH}\
${MEH}";
QRegularExpression rx("(\\${.*})");
QRegularExpressionMatchIterator i = rx.globalMatch(text);
while (i.hasNext()) {
QRegularExpressionMatch match = i.next();
qDebug() << "Value: " << match.captured(0);
}
Выход:
Значение: «$ {NAME} \ т \ т \ Сбрось ваши $ {DAY} так \ т \ т \ tBye, $ {MEH} $ {MEH } \ т \ т \ т $ {MEH}»
QRegExp rx ("/(\\\\${.*})/ g"); не работает – dasskorpion
oops yeah, вы правы, чтобы соответствовать обратной косой чертой. –
вы можете попробовать «QRegularExpression», если используете Qt5. Это perl-совместимый, в то время как 'QRegExp' - нет. Я также не уверен, что /.../g собирается делать то, что вы думаете в Qt. «QRegularExpression» включает функцию «globalMatch». –