正規表現による複数の置換処理をPowerShellでまとめて実行する-準備編-

はじめに

あるシステムから出力するデータが自分の使いたい形ではない場合、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で置換している処理を整理して、スクリプトによる実行での準備をしました。

次回は、これをスクリプトで一括実行できるようにしていきたいと思います。

*1:拡張機能を入れれば出来るようです

*2:実際のデータよりシンプルにしています

執筆担当者プロフィール
舟越 匠

舟越 匠(日本ビジネスシステムズ株式会社)

人材開発部に所属。社内向けの技術研修をメインにしつつ、JBS Tech BlogやMS認定資格取得の推進役もやっています。資格としてはAzure Solutions Architect Expertを所持。好きなサービスはPower Automate / Logic Apps。好きなアーティストはZABADAK。

担当記事一覧