如何在从 Excel 转换到 Wiki 表时包含超链接?

如何在从 Excel 转换到 Wiki 表时包含超链接?

我使用 Excel 创建包含超链接单元格列的表格。现在我想将这些数据转换为 Wiki 表格格式。如果我使用 tab2wiki (https://magnustools.toolforge.org/tab2wiki.php),我丢失了超链接。有什么工具可以在转换过程中保留超链接?

答案1

如果您知道表格在 wiki 代码中的样子,那么您可以在 Excel 中创建几乎整个表格源代码。您将在 wiki 源代码中添加表格的开头和结尾。例如,创建超链接将类似于 A1 = [[, B1 =目标文章名称,C1 = ]],D1 = = A1&B1&C1

答案2

最终,最好的做法是扩展该tab2wiki工具以提供链接处理支持(源代码这里),尤其是考虑到过去几年通用顶级域名的激增。没有什么比编写专用代码来处理这个问题更好的了,这个问题比这个有限的解决方案(详见下文)所能处理的要复杂得多。

话虽如此,我还是能够用正则表达式和 perl 来破解一些东西,可能根据您的情况,做您需要做的事情,至少如果您可以使用 Linux,否则可以将这种方法应用于不同的环境。我相信记事本++在 Windows 上可用的 ,在其查找替换工具中支持正则表达式,您可能能够调整这种方法以使用该界面与下面的正则表达式(即将 的输出粘贴tab2wiki到 notepad++ 中,然后在其查找替换中使用正则表达式)。

首先,输入提供给tab2wiki

lol wut noway   asdf
1   no way https://www.google.com so cool https://test.net  qwer    zxcv
2       http://kagi.org sd
3   fd  d   https://netflix.org
4   fdasf   f   http://www.apple.org

粘贴后tab2wiki会产生以下文本:

{| border="1" class="sortable"
!lol!!wut!!noway!!asdf
|-
|1||no way https://www.google.com so cool https://test.net||qwer||zxcv
|-
|2||||http://kagi.org||sd
|-
|3||fd||d||https://netflix.org
|-
|4||fdasf||f||http://www.apple.org
|}

此示例包括具有多个链接的单元格,以及在最末端具有链接的结束单元格,以及空单元格。

将此文件保存在某处,然后/tmp/testwikifile使用 的正则表达式引擎执行以下命令perl,绕过并将 和 粘贴[]每个链接周围:

cat /tmp/testtable3 | perl -p -e 's/(http.*?)\.(com|org|net)/\[\1.\2\]/gm'

输出:

{| border="1" class="sortable"
!lol!!wut!!noway!!asdf
|-
|1||no way [https://www.google.com] so cool [https://test.net]||qwer||zxcv
|-
|2||||[http://kagi.org]||sd
|-
|3||fd||d||[https://netflix.org]
|-
|4||fdasf||f||[http://www.apple.org]
|}

限制:

  1. 链接必须http至少以
  2. 需要知道链接的顶级域名 (TLD) 列表

正则表达式的详细信息:

此正则表达式's/(http.*?)\.(com|org|net)/\[\1.\2\]/g'可以分解如下:

  1. 使用新字符串 a la 替换输入字符串s/start/replacement/,并全局执行g(查找所有匹配项)。
  2. 搜索http其他内容.*并执行懒洋洋 ?。然后找到一个句点\.,然后通过找到comorg或中的一个。这将建立两个捕获组,然后我们可以在替换中使用它们。net(com|org|net)
  3. 替换为\[\1.\2\],其中 是从到 句点的\1所有内容,并且 是、或之一。因此,“在这两个匹配之间放置一个句点以重新建立链接,并用开括号和闭括号填充链接。”http\2comorgnet.[]

相关内容