Название: Парсинг QRegExp не работает Отправлено: pavellyba от Июль 07, 2017, 16:10 Пытаюсь извлечь message_id из строки:
Код: "message":{"message_id":2,"from":{"id":225345251,"first_name":"pavel","last_name":"lyba","language_code":"ru"},"chat":{"id":225345251,"first_name":"pavel","last_name":"lyba","type":"private"},"date":1499428096,"text":"\u0422\u0435\u0441\u0442"}}, Сам код: Код: QRegExp re("\"message_id\":([^>]+),"); Что я делаю не так? Название: Re: Парсинг QRegExp не работает Отправлено: gil9red от Июль 07, 2017, 20:50 1. А нафига "[^>]+"? Что это конструкция должна было сделать?
Попробуйте Код // кст, [0-9] заменяется на \d 2. Та строчка явно относится к json, поэтому лучше ее было разобрать парсером json, а не регуляркой // но раз регулярка уже есть, и вытащить нужно только одно значение, то почему бы и нет? Название: Re: Парсинг QRegExp не работает Отправлено: titan83 от Июль 09, 2017, 17:50 Что я делаю не так? Не используйте QRegExp, если в Qt5, то сразу переходите на QRegularExpression. Если же вы на Qt4, то сочувствую: будете страдать от ограничений. Мне в свое время пришлось организовать вызовы perl из своей программы на Qt4, что мои сложные регулярки работали.The number of added features, when compared with QRegExp, is huge. A partial list is: it supports lazy (non greedy) and possessive quantifiers; it supports lookbehind assertions; it supports Perl’s /s, /m, /x, /u regexp modifiers; it properly supports Perl’s global matching it supports named capturing groups; it can properly handle non-BMP character ranges; it supports soft and hard partial matching; it supports subroutine calls/references it supports comments; it supports conditional patterns. Most of these have been long-time nuisances with QRegExp. Now they’re gone. |