Pattern-Matching am Zeilenende mit einer Ausnahme

Pattern-Matching am Zeilenende mit einer Ausnahme

am 12.07.2006 02:36:37 von CRMenge

Hallo,

Ich versuche gerade, aus einem Berg Textdateien einzelne Teile zu
extrahieren, und zwar im Prinzip immer das letzte Wort einer Zeile, es
sei denn, dieses ist ein bestimmtes - dann will ich das vorletze Wort.

Allerdings enden diese Worte immer auch noch auf /, also z.B.
Wort/245086239586 - und dies soll auch abgeschnitten werden.

Für das letzte Wort klappt

(?<= )\w*(?=\/[\d]*$)


Mein Ansatz unter Ausschluß des einen Wortes ist

(?<= )\w*(?=\/[\d]*(?! Wort\/[\d]*)$)

Das klappt aber nicht. Genausowenig wie

(?<= )\w*(?=\/[\d]*)(?! Wort\/[\d]*)$


Was mache ich falsch?


Cédric

--
Adblock-Filterregelsatz für den ruhebedürftigen Surfer :-)
http://chewey.de/mozilla/adblock-filterliste.html
c-3M, die minimalistischen Mozilla-Memos:
http://chewey.de/mozilla/

Re: Pattern-Matching am Zeilenende mit einer Ausnahme

am 15.07.2006 01:39:46 von Andreas Hernitscheck

Cédric Menge schrieb:
>
> (?<= )\w*(?=\/[\d]*(?! Wort\/[\d]*)$)

> Was mache ich falsch?

Ich denke das Problem liegt daran, dass der ganze Text als ein String
angesehen wird und das $ im Regex auch wirklich das Ende meint.

Es gibt da ein Flag um das umzuschalten, so dass jede Zeile erkannt wird
(Dummerweise habe ich mein kleines schlaues Buch nicht zur Hand)

Alternativ geht es vielleicht wenn du nach \n am Ende suchst und damit
die letzte Zeile auch passt, ein \n dem Text hinzufügst.

Warum machst du denn ein [\d]* ? Es sollte reichen ein \d* zu schreiben.