[Dresden-pm] Reguläre Ausdrücke - Suchen und Ersetzen von Worten

Aristoteles Pagaltzis pagaltzis at gmx.de
Di Aug 19 14:37:43 PDT 2008


* Torsten Knorr <create-soft at tiscali.de> [2008-08-19 22:15]:
> #!/usr/bin/perl -w
> =head
> Aristotle Pagaltzis, 17 Aug 2008 17:11:08 +0200
>> Das kann man mit einem einzigen `s///`-Aufruf nicht l=F6sen.
> =cut
> #-------------------------------------------------
> use strict;
> use re 'eval';
> my $text = "Ein Affe klettert, weil er ein Affe ist.";
> my @m;
> $text =~ m{(Affe( klettert)?)(?{push(@m, $1)})(?!)};
> print("$_\n") for(@m);
> #-------------------------------------------------
> __END__
> #-------------------------------------------------

Ich sehe da nirgendwo ein `s///`.

Das ist außerdem keine Lösung, denn die Ausgabe enthält keinerlei
Kontext. Du kannst jetzt gerne noch ein paar kommentarlose Code-
Schnippsel posten, bis du das ganze mit `(?!)` zum Funktionieren
gebracht hast, gerne auch mit `m///` alleine, statt mit `s///`.

Danach beurteilen wir die Verständlichkeit deines resultierenden
Codes verglichen mit meinem. OK?

>> Ziel w=E4re es, Links um "affe", "hund", "affe klettert", "hund
>> rennt" zu bauen. Leider baut er mir die so nur um "affe" und
>> "hund".
>
> Sollen aus "Affe klettert" 2 Links werden?

Da steht, dass er Links um »Affe« und »Affe klettert« haben will.
Also will er wohl um »Affe klettert« herum einen Link haben und
um »Affe« auch. Jedenfalls nach dem, was da steht. Vielleicht ist
ja was anderes gemeint.

Gruß,
-- 
Aristoteles Pagaltzis // <http://plasmasturm.org/>


Mehr Informationen über die Mailingliste Dresden-pm