Christoph: Reguläre Ausdrücke

Beitrag lesen

Hey Jo,

ich glaub, der Fehler liegt im fehlenden Fragezeichen hinter dem *.

s/<start id="1">.*</start>//g

ersetzt Dir den ganzen Text von Anfang bis Ende

s/<start id="1">.*?</start>//g

ist "non-greedy", d.h. es wird nur der Teil bis zum nächsten Vorkommen von "</start>" ersetzt.

War's das?

Christoph

Versteh ich absolut nicht was du meinst. Kannst du das näher präzesieren?

Hier ist nochmal ein Beispiel:

my $str = "<start id="1"> bla bla 1 </start><start id="2">bla bla 2 </start>";
$str =~ s/<start id="2">.*</start>//g; ### das geht noch so
###$str =~ s/<start id="1">.*</start>//g; ### aber das nicht
print $str."\n";

Ich will also ein <start>-Element komplett rauswerfen, das andere soll aber drin bleiben.