Seite 1 von 1
QRegExp mit Callback- oder MatchEvaluator?
Verfasst: 2. Mai 2006 08:11
von gerome69
... suche ich gerade vergeblich.
Etwa sowas (Pseudo-Code):
Code: Alles auswählen
QString callback(QString match) {
// mache was auch immer mit dem Match und gib ihn dann zurück
match="|"+match+"|";
return match;
}
QRegExp rx( "<(.*?)>" ); Zum Rausfinden des Inhalts von Tags
QString htmlLine="bla <b>blubb</b> blubber <i>bla</i>";
htmlLine.replace(rx,&callback); // Aber das finde ich halt nicht, das es sowas gibt.
Danke schön für Tips, Gérôme
Verfasst: 2. Mai 2006 10:44
von patrik08
QtXml tag auslesen... \qt4\examples\xml\dombookmarks (beispiele..)
oder eleganter Xpath von libxml2 xslt... xml => vector array ecc... ist sehr schnell!
das qt html ist sehr sauber und last sich auch als xml lesen...
falls von externe quelle html (unsauber) ... einfach zuerst durch tidy putzen libtidy.....
Verfasst: 2. Mai 2006 10:56
von gerome69
patrik08 hat geschrieben:QtXml tag auslesen... \qt4\examples\xml\dombookmarks (beispiele..)
oder eleganter Xpath von libxml2 xslt... xml => vector array ecc... ist sehr schnell!
das qt html ist sehr sauber und last sich auch als xml lesen...
falls von externe quelle html (unsauber) ... einfach zuerst durch tidy putzen libtidy.....
Das hilft mir nicht. Die Tag-Geschichte sollte ja nur als primitives Beispiel dienen.
Ich brauche sowas wie eine Callback-Funktionalität.
Gruß, Gérôme
Verfasst: 2. Mai 2006 11:07
von patrik08
ohne ein konkretes reales beispiel kann ich auch nicht helfen..
\qt4\examples\tools\regexp\release
http://doc.trolltech.com/4.1/qregexp.html
Regular expression:
http://en.wikipedia.org/wiki/Regular_expression
ist das fundament beim programmieren ... bei qt benennt es sich
QRegExp in php
http://php.net/preg-match ist alles das selbe ... eben ein fundament.... auf dem man programme schreiben kann...
Verfasst: 2. Mai 2006 11:43
von gerome69
Sorry, aber das kenne ich doch alles.
Ich suche eine grundsätzliche Möglichkeit, eine Callback/MatchEvualator-Geschichte zu implementieren.
Wenn das mit Q... nicht geht, werde ich wohl auf Boost zurückgreifen.
Gruß, Bernd
Verfasst: 2. Mai 2006 12:13
von patrik08
Callbacks oder wie in php "create_function" werden bei mir im qt durch signale / slots ersetzt....
http://doc.trolltech.com/4.1/signalsandslots.html und in einer class kann man mit signale slot emit praktisch alles anstellen
Code: Alles auswählen
void Counter::setValue(int value)
{
if (value != m_value) {
m_value = value;
emit valueChanged(value);
}
}
Verfasst: 2. Mai 2006 21:15
von upsala
Mach halt sowas in der Art (ungetestet):
Code: Alles auswählen
QString callback(QString match) {
match="|"+match+"|";
return match;
}
QRegExp rx( "<(.*?)>" );
QString str="bla <b>blubb</b> blubber <i>bla</i>";
int pos=0;
while ((pos = rx.indexIn(str, pos)) != -1) {
QString m=callback(rx.cap(1));
str.replace(pos, rx.matchedLength());
pos+=-rx.matchedLength()+m.length();
}