私はExcelを使ってハイパーリンクされたセルの列を含む表を作成しています。このデータをWiki表形式に変換したいのですが、tab2wiki(出典: magnustools.toolforge.org) では、ハイパーリンクが失われます。変換時にハイパーリンクを引き継ぐツールはありますか?
答え1
Wikiコードで表がどのように見えるかがわかれば、Excel自体でほぼすべての表ソースコードを作成できます。表の始まりと終わりはWikiソースコードに追加します。たとえば、ハイパーリンクを作成するには、A1 = [[
、B1 =のようになります。対象記事名、C1 = ]]
、D1 = = A1&B1&C1
。
答え2
tab2wiki
最終的には、リンク処理のサポート(ソースコード)を追加してツールを拡張することが最善策となるでしょう。ここ)、特にここ数年の汎用 TLD の急増を考えると、これは非常に困難な課題です。この問題は、この限定的なソリューション (詳細は後述) では処理できないほど複雑なため、専用のコードを作成して対処する以外に方法はありません。
そうは言っても、私は正規表現と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'
、次のように分解できます。
- 入力文字列を新しい文字列に置換し
s/start/replacement/
、それをグローバルに実行しますg
(すべての一致を検索します)。 http
プラスその他を検索して.*
実行してください怠惰に?
. 次にピリオド を見つけ\.
、 を介して 、 、 のいずれかを見つけます。com
これorg
により、置換で使用できる 2 つのキャプチャ グループが確立されます。net
(com|org|net)
- 置換は で
\[\1.\2\]
、は からピリオドまで\1
のすべてであり、 は、 、 のいずれかです。したがって、「リンクを再作成するには、これら 2 つの一致の間にピリオドを入れ、リンクを左括弧と右括弧で埋めます。」http
\2
com
org
net
.
[
]