[Python-de] Re: Regulaere Ausdruecke in Python

Detlef Lannert lannert at uni-duesseldorf.de
Thu Oct 4 18:32:52 EDT 2001


On Thu, Oct 04, 2001 at 04:37:20PM +0200, Gerhard Häring wrote:
> Dein RegEx heisst:
> - Ein Zeichen von A-Z, gefolgt von
> - einem Leerzeichen, gefolgt von
> - einem Zeichen von a-z, gefolgt von
> - einem Leerzeichen, gefolgt von
> - einem Zeichen von 0-9, gefolgt von
> - einem Leerzeichen, gefolgt von

richtig

> - der letzte regex [.|?|!] ist m. E. falsch, du solltest die
>   Sonderzeichen ., ?, ! escapen

das ist nicht erforderlich: in den [] haben ., ? und ! keine
Sonderbedeutung. (Bei "-", "]" und "^" muß man aufpassen; allerdings
kommt es dann auf die Stellung an -- "-" und "]" werden am Anfang und
"^" als nicht-erstes Zeichen "normal" behandelt, AFAIR.)

Wenn Backslashes \ im regulären Ausdruck vorkommen sollen, stellt man
am besten dem String ein r voran, sonst frißt sie der Python-Parser
schon auf bzw. wertet sie aus (z.B. wird "\n" bekanntlich zum
Newline-Zeichen). Also sollte es so gehen (was immer dabei herauskommen
sollte):

>>> print re.match(r"([A-Za-z0-9 ]*)([.!?]*)", "Text bla 4711!?").groups()
('Text bla 4711', '!?')

Das r vor dem Anführungszeichen ist hier eigentlich entbehrlich, aber
bei regulären Ausdrücken sollte man es immer setzen ...

  Detlef



More information about the Python-de mailing list