Suchen/Ersetzen mit Regulären Ausdrücken

Post Reply
Message
Author
diana

Suchen/Ersetzen mit Regulären Ausdrücken

#1 Post by diana »

nabend,
Ich soll die Webseiten meines Vorgängers von reinem HTML nach xhtml trimmen und noch ein paar kleinere Änderungen vornehmen. Es läuft ganz gut, einige Probleme habe ich dabei allerdings noch. Ein Freund riet mir mit "Regulären Ausdrücken" automatisiert die entsprechenden Fragmente durch die neuen Teile ersetzen zu lassen. REs scheinen allerdings ein recht kompliziertes Thema zu sein, bin ehrlich gesagt ein wenig überfordert. Ich kann mit grep aus ps aux nach kmail suchen, und seit heute auch ein sed 's/X/Y/g' datei.html aber das wars dann aber auch schon. :(

Daher möchte ich euch um ein paar Hinweise und Lösungsvorschläge bitten.

Ich bin auf der Suche nach einer RE die mir von einem bestimmten Tag X bis zu einem bestimmten Tag Y (die Tags eingeschlossen) alles auswählt.

Als Beispiel:

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
<html>
<head>
<title>Meine Seite</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-15">
<link rel="stylesheet" href="styles.css" media="screen" title="stylesheet">
</head></font><hr></pre></blockquote>

Jetzt sollten alle Zeichen zwischen <html> und </head> "markiert"/gefunden werden, sodaß ich sie austauschn könnte...

Bin wirklich für jeden Vorschlag dankbar!

Jochen

Re: Suchen/Ersetzen mit Regulären Ausdrücken

#2 Post by Jochen »

Mit einem einzigen RA wirst Du hier wohl nicht weit kommen, da ein RA per Definition zeilenbasiert arbeitet, d.h. ein Treffer nicht über ein Newline hinaus gehen kann. Daher haben die meisten Tools in denen es sinnvoll ist, einen Bereich zu definieren, die Möglichkeit 2 RAs anzugeben:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
awk '/RA1/,/RA2/ {
print "Diese Aktion wird für alle Zeilen"
print "von RA1 bis RA2 ausgeführt"
}'

sed '/RA1/,/RA2/s/RA3/Ersatz/'</font><hr></pre></blockquote>Bei sed wird das Substitute-Kommando (RA3 durch Ersatz) für alle Zeilen abgesetzt, die zwischen RA1 und RA2 liegen.

Ein letzter Punkt noch: HTML/XHTML erlaubt es m.E. doch, dass innerhalb eines Tags ein Zeilenumbruch stattfinden darf, oder? Dann wird es schwierig mit der Definition der passenden RAs. Ich hoffe, Dein Vorgänger hat so was nicht gemacht.

Je nachdem, wieviel Zeit Du investieren willst, wäre vielleicht der Einsatz von lexx/yacc, d.h unter Linux der Einsatz von flex/bison interessant. Aber das ist wirklich viel Aufwand und ziemlich sicher Overkill für Deine Zwecke.


Jochen

bernd

Re: Suchen/Ersetzen mit Regulären Ausdrücken

#3 Post by bernd »

vom w3c, also www.w3.org gibt es das "HTML-Kit".
Das ist ein Editor mit ein paar netten Zusatzfeatures:
für dich wäre
die HTML->XHTML - Konvertierfunktion interessant.
Habs zwar noch nicht ausprobiert, ist aber sicherlich standard-konform,
da wie gesagt, vom W3C selbst.
Vorraussetzung ist vermutlich, dass der "vorgänger-quelltext"
irgendeinem HTML-Standard entspricht (idealerweise wahrscheinlich "strict HTML 4.01")
gruss bernd

Post Reply