Libre Officeで正規表現と一括置換を使って、末尾数字の後ろに文字列を付与する

以下のようなcsvのデータがあるとします。

ID,PASSWORD
Hoge01-01,PASSWORD
Hoge01-02,PASSWORD
Hoge01-03,PASSWORD
...,...

このデータに、急遽末尾に文字列を追加することになしました。

ID,PASSWORD
Hoge01-01C,PASSWORD
Hoge01-02C,PASSWORD
Hoge01-03C,PASSWORD
...,...

各IDに対してHoge01-XXCと、最後に「C」がくっついた形にしたい、と。

これをLibre Officeで処理したい。なお環境としては6.2.2.2 (x64)を想定。

セルの右下にカーソルを合わせて十字になったところでドラッグすると、連番のデータを作ることができるというのは方法として存在しますね。

Excelだと、Hoge01-01Cの形にした後にドラッグすると、きちんとHoge01-02C, Hoge01-03Cと連番データが作成できます。

しかし、Libre Officeはさすがにそこまではできないようで、Hoge01-01Cのコピーが大量に作成されてしまいました。

オープンソースですし、致し方なし。

とはいえ、この修正を手作業でやるのは非効率的です。どうにかならないものか。

色々試した結果、丸括弧の中のパターンを$1で再利用するという、プログラムではわりとよくやる手法でできることが分かりました。

マッチさせたい条件は正規表現で Hoge01-([\d]{2}) という形にし、置換後のパターンを Hoge01-$1C と指定します。

これで丸括弧の中の [\d]{2}$1に展開されるため、Hoge01-01C, Hoge01-02C, Hoge01-03Cとマッチさせることができます。

同じような機会はないとはそうそう思いますが、一応メモしておきます。

この記事を書いた人

アバター

アルム=バンド

フルスタックエンジニアっぽい何か。LAMPやNodeからWP、gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。