Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Privalov от Ноябрь 29, 2015, 19:00



Название: QRegExp выбрать строки в которых отсутствует слово.
Отправлено: Privalov от Ноябрь 29, 2015, 19:00
Здравствуйте. Требуется помощь.
Есть  xml файл, требуется выбрать строки не содержащие определенного слова.

Использовал следующее выражение /<тэг(?!.*слово).*>(.*)</тэг>/.
При тестировании на сайте https://regex101.com всё прекрасно работает, а в программе нет. Проверял так же в программе qregexp-editor. Не работает подобное выражение.
Видимо это особенности синтаксиса qregexp.
Может ли кто нибудь подсказать в чём  проблема.

Строки вида - "<тэг некоторые данные слово" данные>тут данные которые нужно забрать если  в начальном тэге отсутствует слово</тэг>"



Название: Re: QRegExp выбрать строки в которых отсутствует слово.
Отправлено: Cirran от Декабрь 03, 2015, 17:15
Попробуйте вместо QRegExp использовать QRegularExpression, если Ваша версия Qt >= 5.0.
Цитировать
Note: In Qt 5, the new QRegularExpression class provides a Perl compatible implementation of regular expressions and is recommended in place of QRegExp.
Хотя, согласно ссылке https://bugreports.qt.io/browse/QTBUG-2371 (https://bugreports.qt.io/browse/QTBUG-2371)
Цитировать
Lookaheads (?=Expr) , (?!Expr) are supported by QRegExp in Qt, lookbacks (?<=Expr), (?<!Expr) aren't.


Название: Re: QRegExp выбрать строки в которых отсутствует слово.
Отправлено: Privalov от Декабрь 03, 2015, 17:22
Попробуйте вместо QRegExp использовать QRegularExpression, если Ваша версия Qt >= 5.0.
Спасибо, буду пробовать. Потом отпишусь.