подскажите как сделать парсер для такого варианта, из того что успел прочитать предлагалось сканировать побайтно или использовать QRegExp, мог бы кто нибудь помочь написать для него строку?
Накой тут регулярка, юзай обычную примитивную функцию(работоспособность не гарантирую, просто пример как делать, сделанно наспех):
C++ (Qt)
#include <QString>
#include <QStringList>
void parseLineToList( const QString &line, const QChar &separator, const QChar &escape, QStringList &list )
{
size_t count = line.size();
size_t position = 0;
bool escapeMode = false;
for( size_t i = 0; i < count; ++i )
{
if( escapeMode )
{
if( line[i] == escape )
{
escapeMode = false;
}
}
else
{
if( line[i] == escape )
{
escapeMode = true;
}
else
{
if( line[i] == separator )
{
if( position != i )
{
list.append( QString( line.data() + position, i - position ) );
}
position = i + 1;
}
}
}
}
if( position != count )
{
list.append( QString( line.data() + position, count - position ) );
}
}
int main(int argc, char *argv[])
{
QString line = "text1;text2;text3\"text4;text5\"text6;\"text7;text8\"";
QStringList list;
parseLineToList( line, ';', '"', list );
return 0;
}