使用Notepad++进行正则表达式的查找和替换

6

我有一个HTML菜单文件,其中包含通过chm解码器提取的HTML页面列表。

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

我希望您能帮助我创建一个“目录”文件,用于Calibre(HTML文件,包含按照所需顺序链接到所有其他文件的链接)。最终文件应该类似于这样:
<a href="final/pref04.html">Icons Used in This Book</a><br/>
<a href="final/pref05.html">Command Syntax Conventions</a><br/>
.
.
.

首先,我需要使用正则表达式删除数字前缀,然后添加a href属性以创建超链接,并更改URL和标题的位置。有人可以展示如何在Notepad++中实现这个吗?

1个回答

5
我认为这对你有用,我基于Mac系统,没有notepad ++,但这在dreamweaver中有效。假设每个表达式都是基于一行的。
查找:
\(.*?"(.*?)","(.*?)".*

替换:
<a href="$2">$1</a><br/>

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

替换全部后:
<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/>

如果不是基于一行的更改,将.*替换为.*?\n。这样应该会在每个换行符后停止。为了可读性,您还可以在替换中添加一个换行符。
也许最好解释一下正则表达式,以防您想要修改它...
第一个\转义了(,使得正则表达式知道要查找字面字符而不是特殊的正则表达式分组。 *?表示查找到第一个"之前的每个字符;(.是任何单个字符,*是前一个字符的零个或多个出现,?告诉它在下一个字符"的第一次出现时停止)。最后的.*表示继续搜索。().*?中找到的值分组到$1$2中。数字对应于它在正则表达式中的顺序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接