Название: Парсинг с помощью QRegExp Отправлено: Larry от Апрель 22, 2013, 11:41 Добрый день, форумчане! Помогите решить такую проблему. Есть устройство, с которого я считываю через com-порт список файлов. Мне необходимо распарсить этот список и оставить только имена файлов, которые есть в списке, вот вид списка:
Цитировать AT#LSCRIPT сами названия файлов я вытягиваю с помощью:#LSCRIPT: "AaStart.py",625 #LSCRIPT: "Alarm.pyo",2921 #LSCRIPT: "Alias.pyo",111 #LSCRIPT: "Cache.pyo",2491 #LSCRIPT: "Config.ini",680 #LSCRIPT: "Config.pyo",8750 #LSCRIPT: "Float.pyo",4470 #LSCRIPT: "Func.pyo",3125 #LSCRIPT: "GPSInt.pyo",4146 #LSCRIPT: "History.pyo",4064 #LSCRIPT: "IO.pyo",3477 #LSCRIPT: "IPInt.pyo",6723 #LSCRIPT: "main2.pyo",13429 #LSCRIPT: "main3.pyo",10934 #LSCRIPT: "SPIIO.pyo",9432 #LSCRIPT: "xID.ini",11 #LSCRIPT: free bytes: 1925316 OK Код: void CGPSTerminal::slotReadData() Цитировать "AT" а вот вид вывода, когда занесены только 9 последних файлов:"#LSCRIPT #LSCRIPT: "AaStart.py",625 #LSCRIPT: "Alarm.pyo",2921 #LSCRIPT: "Alias.pyo",111 #LSCRIPT: "Cache.pyo",2491 #LSCRIPT: "Config.ini",680 #LSCRIPT: "Config.pyo",8750 #LSCRIPT: "Float.pyo",4470 #LSCRIPT: "Func.pyo",3125 #LSCRIPT: "GPSInt.pyo",4146 #LSCRIPT: "History.pyo",4064 #LSCRIPT: "IO.pyo",3477 #LSCRIPT: "IPInt.pyo",6723 #LSCRIPT: "main2.pyo",13429 #LSCRIPT: "main3.pyo",10934 #LSCRIPT: "SPIIO.pyo",9432 #LSCRIPT: "xID.ini",11 #LSCRIPT: free bytes: 1925316 OK Цитировать "AT" Видно что занесены только 9 последних файлов, между которыми нет дополнительных переносов строк и переводов кареток...Помогите пожалуйста...."#LSCRIPT #LSCRIPT: "AaStart.py",625 #LSCRIPT: "Alarm.pyo",2921 " "#LSCRIPT: "Alias.pyo",111 " "#LSCRIPT: "Cache.pyo",2491 " "#LSCRIPT: "Config.ini",680 " "#LSCRIPT: "Config.pyo",8750 #LSCRIPT: "Float.pyo",4470 " "#LSCRIPT: "Func.pyo",3125 #LSCRIPT: "GPSInt.pyo",4146 #LSCRIPT: "History.pyo",4064 #LSCRIPT: "IO.pyo",3477 #LSCRIPT: "IPInt.pyo",6723 #LSCRIPT: "main2.pyo",13429 #LSCRIPT: "main3.pyo",10934 #LSCRIPT: "SPIIO.pyo",9432 #LSCRIPT: "xID.ini",11 #LSCRIPT: free bytes: 1925316 OK Название: Re: Парсинг с помощью QRegExp Отправлено: kambala от Апрель 22, 2013, 16:09 сделай без регэкспа — просто последовательно ищи 2 кавычки в строке и вырезай всё что между ними. если найдена меньше двух — пропускаешь.
Название: Re: Парсинг с помощью QRegExp Отправлено: Larry от Апрель 22, 2013, 16:18 я так изначально и думал сделать, но потом подумал что это не эстетично и не правильно ;D...даже убил на составление регулярного выражения ;D...я с ними не раньше не разбирался...можно будет попробовать и так...
Название: Re: Парсинг с помощью QRegExp Отправлено: Larry от Апрель 22, 2013, 16:32 а нельзя ли просто избавиться от этих переходов на новую строку и возврата кареток? я пытался с помощью remove(QregExp("[\r\n]")), но как-то не везде их убирает...
Название: Re: Парсинг с помощью QRegExp Отправлено: Bepec от Апрель 22, 2013, 16:38 Как говорится дай пример (файл допустим с таким вот текстом), тогда и будет результат.
Название: Re: Парсинг с помощью QRegExp Отправлено: Larry от Апрель 22, 2013, 16:44 вот тот же метод, но с удаление символов перевода строки и каретки:
Код: void CGPSTerminal::slotReadData() Название: Re: Парсинг с помощью QRegExp Отправлено: Bepec от Апрель 22, 2013, 17:38 http://regexpal.com/.
Закинь туда свой текст и экспериментируй. Название: Re: Парсинг с помощью QRegExp Отправлено: Larry от Апрель 22, 2013, 20:21 буду пробовать, спасибо большое...
Название: Re: Парсинг с помощью QRegExp Отправлено: thechicho от Апрель 28, 2013, 21:25 QRegExp regexp("\"([^\"]+)\"");
m_ui->m_lwListScriptModule->addItem(regexp.cap(1).trimmed()); |