使用 Notepad++ 查找并替换为正则表达式
Using Notepad++ find and replace with regular expression
我有一个 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 创建一个 'table of contents' 文件(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++ 制作这个吗?
我认为这会为您完成,我是 mac 的,所以我没有记事本++,但这在 Dreamweaver 中有效。假设每个表达式都是基于一行的。
查找:
\(.*?"(.*?)","(.*?)".*
替换:
<a href=""></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
。那应该使它在每个换行符之后停止。为了便于阅读,您可能还想在替换中添加换行符。
可能还应该解释正则表达式,以防您想修改它...
第一个 \
正在转义 (
因此正则表达式知道要查找文字字符和非特殊的正则表达式分组。 *?
表示找到第一个 "
之前的每个字符; (.
是任何单个字符,*
是前面字符的零次或多次出现,?
告诉它在下一个字符第一次出现时停止,"
).最后 .*
表示继续搜索。 .*?
周围的 (
和 )
将找到的值分组为 </code> 和 <code>
。该数字与其在正则表达式中的顺序相关。
我有一个 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 创建一个 'table of contents' 文件(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++ 制作这个吗?
我认为这会为您完成,我是 mac 的,所以我没有记事本++,但这在 Dreamweaver 中有效。假设每个表达式都是基于一行的。
查找:
\(.*?"(.*?)","(.*?)".*
替换:
<a href=""></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
。那应该使它在每个换行符之后停止。为了便于阅读,您可能还想在替换中添加换行符。
可能还应该解释正则表达式,以防您想修改它...
第一个 \
正在转义 (
因此正则表达式知道要查找文字字符和非特殊的正则表达式分组。 *?
表示找到第一个 "
之前的每个字符; (.
是任何单个字符,*
是前面字符的零次或多次出现,?
告诉它在下一个字符第一次出现时停止,"
).最后 .*
表示继续搜索。 .*?
周围的 (
和 )
将找到的值分组为 </code> 和 <code>
。该数字与其在正则表达式中的顺序相关。