Seite 1 von 1

String bis zum ersten Vorkommen eines Zeichens einlesen

Verfasst: 14. Oktober 2006 19:32
von nexus
Hallo,

ich würde gerne einen String bis zum ersten Vorkommen eines bestimmten Zeichens einlesen. Jedoch funktioniert der Ausdruck "(.*?)" nicht mit der QRegExp Klasse. Kann mir jemand sagen, wiso das so ist ? oder äquivalente Ausdrücke dazu nennen ?

Verfasst: 14. Oktober 2006 20:24
von Christian81
Von wo einlesen?
.*? ist auch irgendwie nichtssagen - im Grunde heisst es 'mindestens ein Zeichenmuss vorhanden sein'

Verfasst: 14. Oktober 2006 20:57
von nexus
Das Wort einlesen war etwas falsch gewählt, ich meinte filtern und sicherlich ist .*? alleinstehend "nichtssagend", aber mal nen Beispiel:

Zeichenkette "aa14b123b45"
Die Zahl zw. "aa" und dem ersten "b" soll ausgelesen werden -> "aa(.*?)b" -> ergebnis "14".

Jedoch Funktioniert dies so nicht mit der QRegExp Klasse.

Verfasst: 14. Oktober 2006 21:43
von Christian81
Deine RegExp ist ja auch falsch...
"^aa([^b]*)b.*$"
aa, dann alles ausser b,egal wie viel, dann b, dann egal.
Aber das geht wohl mit QString::find() besser

Verfasst: 15. Oktober 2006 10:35
von upsala
Der reg. Ausdruck funktioniert deswegen nicht, weil du die Hinweise für Perl-Programmierer nicht gelesen hast...

Code: Alles auswählen

QRegExp rx("^aa(.*)b");
rx.setMinimal(true);

Verfasst: 15. Oktober 2006 10:37
von upsala
Im übrigen ist bei den QtDemos eine Demosoftware zum testen von Regular-Expressions dabei...