我使用 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]
|}
限制:
- 链接必须
http
至少以 - 需要知道链接的顶级域名 (TLD) 列表
正则表达式的详细信息:
此正则表达式's/(http.*?)\.(com|org|net)/\[\1.\2\]/g'
可以分解如下:
- 使用新字符串 a la 替换输入字符串
s/start/replacement/
,并全局执行g
(查找所有匹配项)。 - 搜索
http
其他内容.*
并执行懒洋洋?
。然后找到一个句点\.
,然后通过找到com
、org
或中的一个。这将建立两个捕获组,然后我们可以在替换中使用它们。net
(com|org|net)
- 替换为
\[\1.\2\]
,其中 是从到 句点的\1
所有内容,并且 是、或之一。因此,“在这两个匹配之间放置一个句点以重新建立链接,并用开括号和闭括号填充链接。”http
\2
com
org
net
.
[
]