letzte Auftreten eines pattern?

letzte Auftreten eines pattern?

am 27.12.2007 13:41:05 von Ulli Horlacher

Ich such jetzt schon eine ganze Weile in manuals, FAQs, etc, aber ich
kriegs nicht hin:

Wie match ich das letzte Auftreten eines pattern in einem multi-line string?

Konkretes Problem: Ich hab eine MIME-Multipart mail. Da moechte ich den
letzten boundary-string matchen.

Also so was wie: $mail =~ /\n--[^\s]+\n/

Das matcht jetzt natuerlich das erste Auftreten. Ich will aber das letzte
haben.


--
Ullrich Horlacher Informationssysteme und Serverbetrieb
Rechenzentrum E-Mail: horlacher@rus.uni-stuttgart.de
Universitaet Stuttgart Tel: ++49-711-685-65868
Allmandring 30 Fax: ++49-711-682357
70550 Stuttgart (Germany) WWW: http://www.rus.uni-stuttgart.de/

Re: letzte Auftreten eines pattern?

am 27.12.2007 13:49:45 von Paul Hink

Ulli Horlacher wrote:

> Wie match ich das letzte Auftreten eines pattern in einem multi-line
> string?
>
> Konkretes Problem: Ich hab eine MIME-Multipart mail. Da moechte ich
> den letzten boundary-string matchen.
>
> Also so was wie: $mail =~ /\n--[^\s]+\n/
>
> Das matcht jetzt natuerlich das erste Auftreten. Ich will aber das
> letzte haben.

$mail =~ /.*(\n--[^\s]+\n)/s;

Re: letzte Auftreten eines pattern?

am 27.12.2007 13:50:23 von Frank Seitz

Ulli Horlacher wrote:
> Ich such jetzt schon eine ganze Weile in manuals, FAQs, etc, aber ich
> kriegs nicht hin:
>
> Wie match ich das letzte Auftreten eines pattern in einem multi-line string?
>
> Konkretes Problem: Ich hab eine MIME-Multipart mail. Da moechte ich den
> letzten boundary-string matchen.
>
> Also so was wie: $mail =~ /\n--[^\s]+\n/
>
> Das matcht jetzt natuerlich das erste Auftreten. Ich will aber das letzte
> haben.

Packe .* an den Anfang und nutze s als Modifikator.
(ungetestet)

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: letzte Auftreten eines pattern?

am 27.12.2007 19:44:59 von Ulli Horlacher

Frank Seitz wrote:

> > Also so was wie: $mail =~ /\n--[^\s]+\n/
> >
> > Das matcht jetzt natuerlich das erste Auftreten. Ich will aber das letzte
> > haben.
>
> Packe .* an den Anfang

..* ist greedy! tricky!


--
Ullrich Horlacher Informationssysteme und Serverbetrieb
Rechenzentrum E-Mail: horlacher@rus.uni-stuttgart.de
Universitaet Stuttgart Tel: ++49-711-685-65868
Allmandring 30 Fax: ++49-711-682357
70550 Stuttgart (Germany) WWW: http://www.rus.uni-stuttgart.de/

Re: letzte Auftreten eines pattern?

am 27.12.2007 21:04:14 von Florian Weimer

* Ulli Horlacher:

> Konkretes Problem: Ich hab eine MIME-Multipart mail. Da moechte ich den
> letzten boundary-string matchen.
>
> Also so was wie: $mail =~ /\n--[^\s]+\n/

Der sollte die Boundary mit -- am Ende haben, und ist der erste und
einzige dieser Art. Meine ich mich zumindest zu erinnern.

Außerdem gibt es schon fertige MIME-Parser...