Schrift
[thread]2924[/thread]

Ersetzen von Textstellen innerhalb zwei Kriterien



<< >> 6 Einträge, 1 Seite
Anthy
 2004-08-20 17:00
#29390 #29390
User since
2004-08-12
11 Artikel
BenutzerIn
[default_avatar]
Hi Jungs :)

Leider komm ich wieder nicht weiter...bin eigentlich nur Java Programmierer und wurde jetzt aber einem Perl Script zugewiesen und ab und an fehlt mir das ein oder andere Grundwissen.

Es geht um Folgendes:

Ich habe in einem HTML Dokument diese Zeichen:
<!-- ########## Modul infobox : START ########## -->

dazwischen ist ein text und am ende ist wieder

<!-- ########## Modul infobox : ENDE ########## -->

nun brauch ich eine Substitution die mir den Text innerhalb von dem Start und dem Ende einer infobox durch leerzeichen oder "Infoboxinhalt" substituiert.

Code: (dl )
1
2
3
4
5
6
7
8
my $search;
my $search1;
my $replace;
# Reduce all Infoboxes
$search = "(<!-- ########## Modul infobox : START ########## -->)";
$search1 = "(<!-- ########## Modul infobox : ENDE ########## -->)";
$replace = "(<!-- ########## Infobox Inhalt ########## -->)";
#s/$search.*.$search1/$replace/gim;


das hatte ich gemacht jedoch substituiert er damit alles vom ersten infobox Start bis zum letzten infobox Ende...jedoch gibt es mehrere infoboxes in dem html dokument und dazwischen natürlich noch anderen text.

ich muss also nur den text innerhalb infobox start / infobox ende substituieren.

kann da jmd helfen?
Relais
 2004-08-20 17:04
#29391 #29391
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
/.*/ versucht möglichst viel zu matchen, das nennt sich dann gefräßig - greedy
/.*?/ versucht möglichst wenig zu matchen, das nennt sich dann ungefräßig - non-greedy
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
Anthy
 2004-08-20 17:11
#29392 #29392
User since
2004-08-12
11 Artikel
BenutzerIn
[default_avatar]
und das löscht mir immer nur den inhalt von infobox start bis infobox ende?

achja und gibts vlt noch ne möglichkeit das so zu scripten das er mir nur den inhalt löscht das infobox start und infobox ende aber nicht und dadazwischen einfach ####INHALT#### einfügt?\n\n

<!--EDIT|Anthy|1093007528-->
Taulmarill
 2004-08-20 17:19
#29393 #29393
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
versuch mal s/($search).*?($search1)/$1$replace$2/gim;
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Anthy
 2004-08-20 17:24
#29394 #29394
User since
2004-08-12
11 Artikel
BenutzerIn
[default_avatar]
text wird gelöscht komischerweise wird aber das hier angezeigt

Code: (dl )
1
2
3
<!-- ########## Modul infobox  : START ########## -->.(<
   !-- ########## Infobox Inhalt ########## -->).<!-- ########## Modul infobox  : START #########
   # -->


sprich das infobox: ENDE wird nicht angezeigt, obwohl es ja durch die () um das $search1 eigentlich in die $2 gespeichert wird :/

edit pq: hab mal code-tags hinzugefügt wg. smileys\n\n

<!--EDIT|pq|1093009378-->
Anthy
 2004-08-20 17:40
#29395 #29395
User since
2004-08-12
11 Artikel
BenutzerIn
[default_avatar]
hab das problem gelöst statt $1$replace$2 einfach $1$replace$3

vielen dank vorerst :) muss das musste jetzt auf 3 andere übertragen wenn ich probleme habe sprech ich iin diesem thread darauf nochmal an

danke leutz echt super klasse hier!!
<< >> 6 Einträge, 1 Seite



View all threads created 2004-08-20 17:00.