Hallo allerseits, das folgende Stück sollte kein Ergebnis liefern. D.h. sich verweigern, wenn das Ergebnis der fünften Klammer dem der zweiten Klammer entspricht. import re a = re.match(r'^(.*?) +\f([BIR])([^\f]+)\fR([^\f]+)\f([^\2])([^\f]+)\fR *(.*)', 'blah, blab, \fBblub\fR blah balh \fBh\fR.blub') print(a.group(5)) Leider wird stets das "B" ausgegeben. Wie schreibe ich am besten die Verneinung des Ergebnisses der zweiten Klammer? Sieht so aus, als gäbe einen keinen Negationsoperator :( Mit Gruß und Dank, Andreas
Am 19.03.2013 11:57, schrieb Andreas Röhler:
Hallo allerseits,
das folgende Stück sollte kein Ergebnis liefern. D.h. sich verweigern, wenn das Ergebnis der fünften Klammer dem der zweiten Klammer entspricht.
import re a = re.match(r'^(.*?) +\f([BIR])([^\f]+)\fR([^\f]+)\f([^\2])([^\f]+)\fR *(.*)', 'blah, blab, \fBblub\fR blah balh \fBh\fR.blub') print(a.group(5))
Leider wird stets das "B" ausgegeben. Wie schreibe ich am besten die Verneinung des Ergebnisses der zweiten Klammer?
Sieht so aus, als gäbe einen keinen Negationsoperator :(
Mit Gruß und Dank,
Andreas
Hier noch einmal ein vereinfachtes Beispiel a = re.match(r'([0-9]+)([db])([^\2]+)', '123dsfaadddd');print(a.groups()) ==> ('123', 'd', 'sfaadddd') Die "d" sollten von Klammer 3 nicht gefunden werden(?)
Am 19.03.13 12:59, schrieb Andreas Röhler:
Am 19.03.2013 11:57, schrieb Andreas Röhler:
Hallo allerseits,
das folgende Stück sollte kein Ergebnis liefern. D.h. sich verweigern, wenn das Ergebnis der fünften Klammer dem der zweiten Klammer entspricht.
import re a = re.match(r'^(.*?) +\f([BIR])([^\f]+)\fR([^\f]+)\f([^\2])([^\f]+)\fR *(.*)', 'blah, blab, \fBblub\fR blah balh \fBh\fR.blub') print(a.group(5))
Leider wird stets das "B" ausgegeben. Wie schreibe ich am besten die Verneinung des Ergebnisses der zweiten Klammer?
Sieht so aus, als gäbe einen keinen Negationsoperator :(
Mit Gruß und Dank,
Andreas
Hier noch einmal ein vereinfachtes Beispiel
a = re.match(r'([0-9]+)([db])([^\2]+)', '123dsfaadddd');print(a.groups()) ==> ('123', 'd', 'sfaadddd')
Die "d" sollten von Klammer 3 nicht gefunden werden(?)
Du könntest dein Glück mit Look Around Assertions versuchen:
a = re.match(r'([0-9]+)([db])(?
Gruß KP
Am 19.03.2013 19:11, schrieb Karl Pflästerer:
Am 19.03.13 12:59, schrieb Andreas Röhler:
Am 19.03.2013 11:57, schrieb Andreas Röhler:
Hallo allerseits,
das folgende Stück sollte kein Ergebnis liefern. D.h. sich verweigern, wenn das Ergebnis der fünften Klammer dem der zweiten Klammer entspricht.
import re a = re.match(r'^(.*?) +\f([BIR])([^\f]+)\fR([^\f]+)\f([^\2])([^\f]+)\fR *(.*)', 'blah, blab, \fBblub\fR blah balh \fBh\fR.blub') print(a.group(5))
Leider wird stets das "B" ausgegeben. Wie schreibe ich am besten die Verneinung des Ergebnisses der zweiten Klammer?
Sieht so aus, als gäbe einen keinen Negationsoperator :(
Mit Gruß und Dank,
Andreas
Hier noch einmal ein vereinfachtes Beispiel
a = re.match(r'([0-9]+)([db])([^\2]+)', '123dsfaadddd');print(a.groups()) ==> ('123', 'd', 'sfaadddd')
Die "d" sollten von Klammer 3 nicht gefunden werden(?)
Du könntest dein Glück mit Look Around Assertions versuchen:
a = re.match(r'([0-9]+)([db])(?
Gruß KP
Ahh, so geht es, Danke! Hier noch mal am realen Ausdruck: # greift die Wiederholung \B..\R,.. \B..\R,.. a = re.match(r'([^\f]+)\f([BI])([^\f]+)\fR([^\f]+)\f\2([^\f]+)\fR(.*)', 'directory, however, \fBsccs\fR applies the subcommand to every \fBs.\fRfile');print(a.groups()) # schließt die Wiederholung \B..\R,.. \B..\R,.. aus # greift \B..\R,.. \I..\R,.. a = re.match(r'([^\f]+)\f([BI])([^\f]+)\fR([^\f]+)\f(?
participants (2)
-
Andreas Röhler
-
Karl Pflästerer