2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【正規表現】テキストエディタの置き換え機能で正規表現を使って、テキスト修正作業で楽をしよう【XML-1】

Last updated at Posted at 2021-09-02

テキストエディタの正規表現での置き換え機能

昨今では、テキストエディタに「正規表現」を使って置き換えする機能が充実している。

Emeditorの場合

image.png

Notepad++の場合

image.png

有用性

この機能は便利で、規則性を持ったデータであれば、いろんな用途に使える:

  • HTMLやXMLやjsonで出力されたファイルがあって、固定要素を追加したり、一律に変更しなくてはいけないとき
  • CSVやjsonで保管されたデータがあって、そのデータを一定の規則で解析しないといけないとき
    などなど

今回はWindowsインストーラを自動で構築できるWiXEditを使っていて発生した課題であるので取り上げる。

課題

 インストーラを作るとき、デフォルトのインストールではC:\Program Files(x86)にインストールされるが、64bitのアプリケーションなのでC:\Program Files\に保存して欲しい。

 なお、WixToolSetに関する修正方法については、こちらを参照

XML構成

Directory要素の一部を抽出

<Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="ProgramFiles64Folder" Name="ProgramFiles64Folder">
		<Directory Id="OPSIMULATOR" Name="OPSimulator">
			<Component Id="ABP.AUTOMAPPER.DLL" DiskId="1" Guid="5606C656-4B95-43AE-966E-27F72FAEE65F">
				<File Id="ABP.AUTOMAPPER.DLL" Name="Abp.AutoMapper.dll" Source="..\OPSimulator\Abp.AutoMapper.dll" />
			</Component>
			<Component Id="ABP.DLL" DiskId="1" Guid="F5DC937F-7270-430F-9DA0-443B23679514" >
				<File Id="ABP.DLL" Name="Abp.dll" Source="..\OPSimulator\Abp.dll" />
			</Component>
			<Component Id="APPSETTINGS.DEVELOPMENT.JSON" DiskId="1" Guid="72B3BA58-D113-488A-9E93-2D197BEC853F">
				<File Id="APPSETTINGS.DEVELOPMENT.JSON" Name="appsettings.Development.json" Source="..\OPSimulator\appsettings.Development.json" />
			</Component>
... (以下省略)

ルール

このルール整理がまず大切。
どんな正規表現を使うか、パズル要素がある。
よさげなのを考えて戦略を立てるのが大切。

  • Componentタグに、以下のオプションを追加したい
  • Win64="yes"
  • Componentタグは、常にId、DiskId、Guidの3つのオプションで構成される。
  • Componentタグに含まれる特殊文字は、ピリオド、ハイフンである

正規表現を検討した結果

こんな感じになりました。
もちろん、答えは1つではないのでもっと良い方法はあります。

ただし、今回はなるべく作業を早くやりたい!
そういうときは、あまり拘らずに、↑で決めたルールだけを考えて簡易的な正規表現を使います。

image.png

正規表現の意味合い

  • 検索する文字列
  • Componentタグを見つけたら、その後に文字列か=か"か.か=のどれかが続く
  • それが3回必ず来るので、連結して3回書く(ここはもっと上手くやればまとめられるけど、パパっとやりたかったのでコピペでやった)
  • 閉じるタグとかは置換後の文字列の結果に影響するのでつけない
  • 置換後の文字列
  • 元の文字列を残す
  • Win64="yes"を付加する

結果

 無事、C:\Program Filesフォルダにインストールされたアプリ(OPSimulatorフォルダ)が保存されるようになりました

image.png

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?