餡子付゛録゛

ソフトウェア開発ツールの便利な使い方を紹介。

正規表現によるMarkdownの表の列の追加と削除

Markdown記法の文書中に表を入れることもあります。列名と文字寄せしか装飾が無い簡素な場合は、

|id|name|
|:---:|:---|
|001|noah|
|002|sophia|

と言うようにバーティカルバー(|)で区切りを入れ、:---(左寄せ):---:(中央寄せ)---:(右寄せ)を指定する行の一つ上の行が列名、下の行が列名以外の1行目以降の行となります。意図せず一行の表になったりするので*1罠な面もあるのですが、便利なときもある文法です。

編集していて厄介なのが、列の追加と削除です。CSVと相互変換できるツールもありますし、VSCodeであれば表を直接編集する事もできるのですが、一般のテキストエディターであれば正規表現で置換する方が手っ取り早いかもしれません。Perl互換正規表現が使えるとして、

操作 置換対象 置換文字
J個目の|の後に|を追加 ^((?:[^|\n]*\|){J}) $1|
J個目の|の後、|までを削除 ^((?:[^|\n]*\|){J})[^|\n]*\| $1

で複数行の置換を行えば、列の追加と削除になります。Jは任意の数字に変えて使ってください。列追加の場合は、文字寄せを追記しないと表として解釈されないかもしれません。

*1:行頭が | であるかで表なのか判別していて滅多に遭遇しませんが、利用者の意図を汲んでくれるわけではないです。なお、表ではないが行頭がバーティカルバーの場合は \| もしくは|と数値参照入力で書きます。