はじめに
あるシステムから出力するデータが自分の使いたい形ではない場合、Visual Studio Codeなどを使い、正規表現を使って加工する事が多いです。
ただ、中には複数回の置換を行う必要があるものがあり、一連の置換をまとめて実行できないものかと考えました。
Visual Studio Codeでは標準でマクロの機能は無いようなので、PowerShellで実装してみることにしました。*1
本記事では、スクリプトとして組む前に、まずはどのようなデータをどのような正規表現で加工するか、を整理していきます。
加工前のデータと加工後のデータ
今回、加工前のデータとして、以下のサンプルを用意しました。*2
Data |
---|
Takumi Funakoshi(フナコシ タクミ): 技術部 |
User01 Test (テスト ユーザー01): 営業部 |
User02 Test(テスト ユーザー02): 総務部 |
最終的には、以下の形を得ることを目的とします。
姓 | 名 | フリガナ |
---|---|---|
Funakoshi | Takumi | フナコシ タクミ |
Test | User01 | テスト ユーザー01 |
Test | User02 | テスト ユーザー02 |
正規表現を使った置換
まず、普段やっている、Visual Studio Codeでの置換を整理していきます。
正規表現での置換方法は色々あると思うのですが、今回は、順を追って少しずつ希望の形にしていきたいと思います。
また、今回、列の分割は、タブ(\t
)を使っていきます。
元のデータです。
Takumi Funakoshi(フナコシ タクミ): 技術部 User01 Test(テスト ユーザー01): 営業部 User02 Test(テスト ユーザー02): 総務部
まず、フリガナ以降の情報を削っていきます。
- 検索文字列
).*$
- 置換後の文字列
- (空白)
置換後のデータです。
Takumi Funakoshi(フナコシ タクミ User01 Test(テスト ユーザー01 User02 Test(テスト ユーザー02
残ったデータを考えます。データとして次の構造になっています。
名(半角スペース)
姓(
フリガナ
これを、次の様にします。
姓\t
名\t
フリガナ
そのために利用する正規表現です。
- 検索文字列
^(.+) (.+)((.+)
- 置換後の文字列
$2\t$1\t$3\t
置換後のデータです。
Funakoshi Takumi フナコシ タクミ Test User01 テスト ユーザー01 Test User02 テスト ユーザー02
Excelに貼り付けると、ちゃんとセルで区切られた状態になります((余談ですが、VSCodeからコピーする場合、フォーマットをプレーンテキストにしてからコピーしないと、タブを認識してくれません))
おわりに
出来れば取得した情報が初めから加工しなくてもいいデータだと楽なのですが、そうも行かないケースもありますよね。
本記事では、まず、普段VSCodeで置換している処理を整理して、スクリプトによる実行での準備をしました。
次回は、これをスクリプトで一括実行できるようにしていきたいと思います。
舟越 匠(日本ビジネスシステムズ株式会社)
人材開発部に所属。社内向けの技術研修をしつつ、JBS Tech Blog編集長を兼任。2024年8月からキーマンズネットでPower Automateの連載を開始。好きなサービスはPower AutomateやLogic Apps。好きなアーティストはZABADAKとSound Horizon。
担当記事一覧