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...