2015-05-21 9 views
6

Mam plik menu HTML, który zawiera listę stron html, wyodrębnionych przez dekoder chm.Używanie Notepad ++ znajdź i zamień na wyrażenie regularne

(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"); 

Chcę stworzyć z tym o „Spis treści” pliku dla Kalibra (plik HTML, który zawiera odnośniki do wszystkich innych plików w odpowiedniej kolejności). Ostateczna plik powinien wyglądać tak:

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

więc najpierw muszę usunąć prefiksy cyfr z wyrażenia regularnego, a następnie dodać atrybut a href zrobić hiperłącze, i zmienić pozycję URL i tytułu. Czy ktoś może pokazać, jak to zrobić z Notepad ++?

Odpowiedz

6

Myślę, że zrobiłoby to dla ciebie, jestem oparty na macach, więc nie mam notatnika ++, ale działa to w programie Dreamweaver. Zakładając, że każde wyrażenie jest oparte na jednej linii.

Znajdź:

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

Wymienić:

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

Plik:

(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"); 

Po Zamień wszystko:

<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/> 

Jeśli nie ma jednej zmiany opartej na linii .* do .*?\n. To powinno spowodować zatrzymanie po każdym nowym linii. Dla czytelności możesz również dodać nowy znak do zamiennika.

prawdopodobnie powinien wyjaśnić regex, jak również w przypadku, gdy chcesz go modyfikować ...

Pierwszy \ ucieka ( więc regex wie szukać dosłownym charakter i nie specjalnej grupy regex. The *? mówi znaleźć każdą postać, aż do pierwszego "; (. to dowolny pojedynczy znak, * jest równe zero lub więcej wystąpieniom poprzedniego znaku, a ? informuje, że zatrzyma się przy pierwszym wystąpieniu następnego znaku, "). Ostatni numer .* mówi, że kontynuuj wyszukiwanie. ( i ) wokół .*? grupują znalezioną wartość do $1 i $2. Liczba jest skorelowana z kolejnością, w jakiej znajduje się w regex.

+0

Działa to dobrze. Dziękuję Ci! – minto