Schrift
[thread]9159[/thread]

Regex für n-tes Auftreten eines HTML-Tag Paares



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
rk-ger
 2007-07-05 23:17
#78236 #78236
User since
2006-08-07
45 Artikel
BenutzerIn
[default_avatar]
Ich habe Dateien, in denen Tabellen in der Form

<td>wert</td> enthalten sind. Die Anzahl der Paare hintereinander ändert sich. Ich muss nun mal den Inhalt des ersten, des dritten oder des fünften Paares ändern.

Code: (dl )
$var1 =~ s!(.*)(<td>)(\d{4,6})(<\/td>)(.*)!$1-foo-$2-bar-$3...usw


Damit finde ich problemlos das erste Paar. Wie aber finde ich das zweite, dritte oder vierte Paar?
renee
 2007-07-05 23:37
#78237 #78237
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich verstehe das Problem noch nicht so ganz. Kannst Du mal ein paar Beispiele für Ausgangsdaten und das Wunschziel zeigen??
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
ptk
 2007-07-06 00:11
#78238 #78238
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Versuch's mal mit CPAN:HTML::TreeBuilder::XPath.
rk-ger
 2007-07-06 00:14
#78239 #78239
User since
2006-08-07
45 Artikel
BenutzerIn
[default_avatar]
Ich habe eine Funktion die erstellt aus MySQL Selects Html-Tabellen(fragmente). Und ab und zu muss ich die Tabellen (<td></td>-Paare) noch verändern vor der Ausgabe. Die Funktion zu ändern ist mir zu aufwendig (sprich: der Kunde zahlt es nicht). Also dachte ich: quick und dirty mit suchen und ersetzen.

Beispiel
Code: (dl )
1
2
3
Quelle: <td>001212</td><td>553</td><td>27</td><td>00</td>

Fertiger String: <td>001212</td><td>553</td><td><a href='http://www.foobar.de/script.cgi?act=foo;bar=27'>klick</a></td><td>00</td>
rk-ger
 2007-07-06 00:30
#78240 #78240
User since
2006-08-07
45 Artikel
BenutzerIn
[default_avatar]
Danke für den Tipp, leider darf ich auf der Maschine des Kunden keine Module installieren.
renee
 2007-07-06 00:48
#78241 #78241
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich versteh' sowas nicht: Eigene Module darf man auf dem Rechner speichern aber keine fertigen von CPAN? Warum denn nicht?

So Module kann man auch in ein selbst bestimmtes Verzeichnis installieren, so als würde es direkt zur Anwendung gehören...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
rk-ger
 2007-07-06 00:55
#78242 #78242
User since
2006-08-07
45 Artikel
BenutzerIn
[default_avatar]
Eigene Module? Ich habe nirgends von eigenen Modulen gesprochen. Nur von einer Funktion, die ist aber nicht in ein Modul ausgelagert.
renee
 2007-07-06 11:00
#78243 #78243
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=rk-ger,05.07.2007, 22:14]Ich habe eine Funktion die erstellt aus MySQL Selects Html-Tabellen(fragmente). Und ab und zu muss ich die Tabellen (<td></td>-Paare) noch verändern vor der Ausgabe. Die Funktion zu ändern ist mir zu aufwendig (sprich: der Kunde zahlt es nicht). Also dachte ich: quick und dirty mit suchen und ersetzen.

Beispiel
Code: (dl )
1
2
3
Quelle: <td>001212</td><td>553</td><td>27</td><td>00</td>

Fertiger String: <td>001212</td><td>553</td><td><a href='http://www.foobar.de/script.cgi?act=foo;bar=27'>klick</a></td><td>00</td>
[/quote]
Gibt es "Regeln" für das ersetzen? Wie wird festgelegt, welche Zelle geändert werden muss?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
rk-ger
 2007-07-06 14:13
#78244 #78244
User since
2006-08-07
45 Artikel
BenutzerIn
[default_avatar]
Hmmm, mein Beispiel ist wohl unverständlich. Ich versuche ein anderes Beispiel.

Ich habe als Ausgangmaterial einen String:
Code: (dl )
"<td>foo</td><td>foo</td><td>foo</td><td>foo</td><td>foo</td><td>foo</td>"

Ich möchte einen anderen String:
Code: (dl )
"<td>foo</td><td>foo</td><td>foo</td><td>foo</td><td><a href="http://www.x.y?var=foo">foo</a></td><td>foo</td>"

In diesem Fall also möchte ich den Wert in Spalte 5 durch einen anderen Wert ersetzen.

In einem anderen Fall möchte ich den Wert der Spalte 6 durch einen anderen ersetzen. Alle Spalten enthalten im Original Zahlen zwischen 4 und 13 Stellen. Ich weiß vorher nicht was kommt. Nur die Nummer der Spalte (hier im Beispiel Spalte 5) die kenne ich. Und ich kenne den Link mit dem ich den betreffenden Spaltenwert unterlegen muss.
renee
 2007-07-06 14:40
#78245 #78245
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl

use strict;
use warnings;

my $string = "<td>foo</td><td>foo</td><td>foo</td><td>foo</td><td>foo</td><td>foo</td>";
my $col    = 5;
my $link_anfang = '<a href="http://board.perl-community.de">';

my $min    = $col - 1;

$string =~ s!((?:<td>.*?</td>){$min})<td>(.*?)</td>!$1<td>$link_anfang$2</a></td>!;

print $string;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2007-07-05 23:17.