QString und QRegEx

Alles rund um die Programmierung mit Qt
Antworten
Aenni
Beiträge: 79
Registriert: 15. Juli 2010 22:29

QString und QRegEx

Beitrag von Aenni »

Hallo Liebe QT-Experten ;)


ich bin grade dran einen QString mit Regex zu durchsuchen und die Ergebnisse zu speichern.
Bin etwas am verzweifeln und hoffe jemand kann mir helfen ;)

use: VS08 QT4.6 c++

Mein Code:

Code: Alles auswählen

//basis String - String kann new lines beinhalten 
//

QString qstr = " Tabelle1.Feld1= "Inhalt Feld1 Tab 1 ";
hier steht auch andere Text .. .
Tabelle1.Feld = "Inhalt Feld2 Tab2...."; 
Tabelle1.Feld = "Inhalt Feld3 Tab3...."; ";

// hole dir alles was nach Tabelle1.Feld in den " " steht
//
QRegExp rx ("Tabelle1.Feld\\s\\\=\\s\\\"(.*)\\\"");

int pos = rx.indexIn(qstr);

QStringList list = rx.capturedTexts();

// schreibe die ergebnisse in ein Datei:
//
QFile MyFile( "regexTest.txt" );
if (MyFile.open (QFile::WriteOnly | QFile::Text)) 
{
	QTextStream stream( &MyFile );
	for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it )
	{
		stream << *it << "\n";
	}
	MyFile.close();
}


Das ganze habe ich so mal probiert doch leider kommt dabei kein Ergebnis heraus.

Würde mich ueber Ansaetze freuen

Im Voraus schonmal Danke ;)

gruss
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Dein Suchstring passt nicht zur Vorgabe. Bei den Demos ist ein Beispielprogramm dabei, mit dem man RegEx'en testen kann.
Aenni
Beiträge: 79
Registriert: 15. Juli 2010 22:29

Beitrag von Aenni »

danke fuer den Tipp,

wirklich nettes Tool ;)
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

Dein qstr ist illegal ;)

Code: Alles auswählen

QString qstr = " Tabelle1.Feld1= \"Inhalt Feld1 Tab 1\"";

// hole dir alles was nach Tabelle1.Feld in den " " steht
QString rest = qstr.replace(QRegExp("(Tabelle)\\d+\.(Feld)\\d+(=)\\","");
// oder 
QString data(  qstr.right(  qstr.size() - qstr.indexOf("\"") ) );  
 
// schreib rest raus ...
Wenn du das (.*) noch durch was sinnvolles zur gleichzeitigen Segmentierung ersetzt ist das natürlich anders, dann ist vielleicht
http://doc.trolltech.com/4.6/qregexp.ht ... uring-text von Interesse .. dann sparst du dir lauter Leerzeilen in der Ausgabe die durch gematchte whitespace's entstehen ;)
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
Antworten