我收到了一个需要重新格式化的 HTML 列表。 120 个问题和 答案(总共 240 个标签集)。 * glark * 我需要做的就是使标签之间的文本成为链接,如下所示:
<li>do snails make your feet itch?</li>
必须成为
<li><a href="#n">do snails make your feet itch?</a></li>
我正在我的 IDE 中执行此替换。
最终我可能会尝试使用 PERL 进行批量替换以插入
'n'
变量,以便链接正确指向。
您可能会问:“如果您可以使用 PERL 来实现这一点,为什么不使用整个 shebang?” ...这是一个有效的问题,但我想更多地使用正则表达式,因为它对于像这样的大列表具有强大的功能。 另外,我的 PERL 技能充其量也只是粗略(如果有 PERL 建议的话,我很欢迎)。
您可以分两步完成。
<li>
替换
<li><a href="#n">
</li>
替换
</a></li>
或者你可以尝试变得聪明,将其合二为一。 这是 Perl 语法中的替代命令($1 引用括号中匹配的内容)。
s,<li>(.*)</li>,<li><a href="#n">$1</a></li>,
当您在那里时,可以轻松地将替换模式的第二部分替换为将递增的表达式
n
s,<li>(.*)</li>,q{<li><a href="#} .++$n . qq{">$1</a></li>},e
了解如何从命令行运行它:
echo '<li>do snails make your feet itch?</li>' |
perl -pe 's,<li>(.*)</li>,q{<li><a href="#} .++$n . qq{">$1</a></li>},e'
<li><a href="#1">do snails make your feet itch?</a></li>
<li>(.*?)</li>
<li><a href="#n">$1</a></li>