好的,正则表达式忍者。我正在尝试设计一种模式来将超链接添加到 ePub 电子书 XHTML 文件中的尾注。问题是编号在每章内重新开始,所以我需要在锚名称中添加一个唯一标识符,以便散列到它的链接。
给定一个(非常简化的)这样的列表:
<h2>Introduction</h2>
<p> 1 Endnote entry number one.</p>
<p> 2 Endnote entry number two.</p>
<p> 3 Endnote entry number three.</p>
<p> 4 Endnote entry number four.</p>
<h2>Chapter 1: The Beginning</h2>
<p> 1 Endnote entry number one.</p>
<p> 2 Endnote entry number two.</p>
<p> 3 Endnote entry number three.</p>
<p> 4 Endnote entry number four.</p>
我需要把它变成这样的东西:
<h2>Introduction</h2>
<a name="endnote-introduction-1"></a><p> 1 Endnote entry number one.</p>
<a name="endnote-introduction-2"></a><p> 2 Endnote entry number two.</p>
<a name="endnote-introduction-3"></a><p> 3 Endnote entry number three.</p>
<a name="endnote-introduction-4"></a><p> 4 Endnote entry number four.</p>
<h2>Chapter 1: The Beginning</h2>
<a name="endnote-chapter-1-the-beginning-1"></a><p> 1 Endnote entry number one.</p>
<a name="endnote-chapter-1-the-beginning-2"></a><p> 2 Endnote entry number two.</p>
<a name="endnote-chapter-1-the-beginning-3"></a><p> 3 Endnote entry number three.</p>
<a name="endnote-chapter-1-the-beginning-4"></a><p> 4 Endnote entry number four.</p>
显然,需要在本书的实际文本中进行类似的搜索,每个尾注都将链接到endnotes.xhtml#endnote-introduction-1
等等。
最大的障碍是每个匹配搜索都在前一个搜索结束之后开始,因此除非您使用递归,否则您无法匹配多个条目的同一位(在本例中为标题)。然而,到目前为止,我对递归的尝试只产生了无限循环。
我正在使用 TextWrangler 的 grep 引擎,但如果您在不同的编辑器(例如 vim)中有解决方案,那也没关系。
谢谢!