2015-05-21 12 views
6

Ich habe eine HTML-Menü-Datei, die eine Liste von HTML-Seiten enthält, extrahiert von chm-Decoder.Verwenden von Notepad ++ Suchen und Ersetzen mit regulärem Ausdruck

(7,0,"Icons Used in This Book","final/pref04.html"); 
(8,0,"Command Syntax Conventions","final/pref05.html"); 
(9,0,"Introduction","final/pref06.html"); 
(10,0,"Part I: Introduction and Overview of Service","final/part01.html"); 
(11,10,"Chapter 1. Overview","final/ch01.html"); 
(12,11,"Technology Motivation","final/ch01lev1sec1.html"); 

möchte ich von diesem ein ‚Inhaltsverzeichnis‘ Datei für Caliber (HTML-Datei, die Links zu allen anderen Dateien in der gewünschten Reihenfolge enthält) erstellen. Die letzte Datei sollte wie folgt aussehen:

<a href="final/pref04.html">Icons Used in This Book</a><br/> 
<a href="final/pref05.html">Command Syntax Conventions</a><br/> 
. 
. 
. 

Also zuerst muss ich die Ziffernpräfixe mit regulären Ausdruck entfernen, fügen Sie dann a href Attribut Hyperlink zu machen, und die Position URL und den Titel ändern. Kann jemand zeigen, wie man das mit Notepad ++ macht?

Antwort

6

Ich denke, das würde es für Sie tun, ich bin Mac basiert, so dass ich nicht Notepad ++ habe, aber das funktioniert in Dreamweaver. Angenommen, jeder Ausdruck basiert auf einer Zeile.

Suche:

\(.*?"(.*?)","(.*?)".* 

ersetzen:

<a href="$2">$1</a><br/> 

Datei:

(7,0,"Icons Used in This Book","final/pref04.html"); 
(8,0,"Command Syntax Conventions","final/pref05.html"); 
(9,0,"Introduction","final/pref06.html"); 
(10,0,"Part I: Introduction and Overview of Service","final/part01.html"); 
(11,10,"Chapter 1. Overview","final/ch01.html"); 
(12,11,"Technology Motivation","final/ch01lev1sec1.html"); 

Nach Alle ersetzen:

<a href="final/pref04.html">Icons Used in This Book</a><br/> 
<a href="final/pref05.html">Command Syntax Conventions</a><br/> 
<a href="final/pref06.html">Introduction</a><br/> 
<a href="final/part01.html">Part I: Introduction and Overview of Service</a><br/> 
<a href="final/ch01.html">Chapter 1. Overview</a><br/> 
<a href="final/ch01lev1sec1.html">Technology Motivation</a><br/> 

Wenn es sich nicht um eine Zeile handelt, ändern Sie .* zu .*?\n. Das sollte es nach jeder neuen Zeile stoppen. Um die Lesbarkeit zu verbessern, können Sie dem Ersetzen auch eine neue Zeile hinzufügen.

Sollte wahrscheinlich die Regex als auch, wenn Sie es ändern wollen erklären ...

Die ersten \ entweicht die ( so die Regex für den wörtlichen Charakter und die nicht spezielle Regex Gruppierung zu suchen weiß. Die *? sagt, finde jedes Zeichen bis zum ersten "; (. ist irgendein einzelnes Zeichen, * ist Null oder mehr Vorkommen des vorhergehenden Zeichens, und ? sagt ihm, beim ersten Vorkommen des nächsten Zeichens zu stoppen, "). Die letzte .* sagt weiter mit der Suche. Die ( und ) um die .*? Gruppe den gefundenen Wert in die $1 und $2. Die Anzahl entspricht der Reihenfolge, in der sie sich in der Regex befindet.

+0

Das funktioniert gut. Vielen Dank! – minto

Verwandte Themen