CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

ソフト開発

WinMergeで複数拡張子を対象とするファイルフィルタと簡単な行フィルタ指定をやってみた

投稿日:

WinMergeでファイル比較することは、SEだったらみんなやっていることと思う。でもファイルフィルタと行フィルタは使ったことがないと思う。おいらだって、何年もWinMergeを使ってきたけど、正規表現がさっぱりわからんから使ったことなかった。いや、デフォルトで用意されているファイルフィルタの「Visual C++ loose」なんかは使ったことあった。それが拡張子fltのテキストファイルで、正規表現で中身をいじれば思うようなことができることは知っていた。いかんせん、正規表現という小難しそうなルールに対して高いハードルを感じていて、もう一歩アプローチできなかったのだ。えらそうにこんな記事を書いてはいるものの、どっかのサイトの受け売りで書いただけだった。
WinMegeのフィルタについて今すぐ知りたいならココを読め

ということで、今回は初歩的かつ誰もがやりたがるであろう簡単なフィルタを作ってみることにした。

1.ファイルフィルタで複数の拡張子を指定する方法
フィルタ指定のところの初期値は「*.*」となっている。「*.txt」とすれば単一の拡張子指定ができることはわかっているが、複数拡張子を指定するべく「*.txt;*.csv」なんて指定しても無駄。DFという名のフリーソフトだったらできることだが、WinMergeではできましぇん。

よって、ファイルフィルタをつくる必要性が出てくる。以下に拡張子fltのファイルをそのまま記載する。ファイルそのものをダウンロードするならここをクリック。
## This is a directory/file filter template for WinMerge
name: txtとcsvを対象
desc: 複数拡張子を指定するテスト

## Select if filter is inclusive or exclusive
## Inclusive (loose) filter lets through all items not matching rules
## Exclusive filter lets through only items that match to rule
## include or exclude
def: exclude

## Filters for filenames begin with f:
## Filters for directories begin with d:
## (Inline comments begin with ” ##” and extend to the end of the line)
f: \.txt$
f: \.csv$

nameとdeskは、ファイルフィルタ一覧に出る名称と説明。
defは、includeかexcludeの選択。指定したものだけを対象にするならexcludeで、指定したものを除外するならinclude。
f:はファイル名指定で、「.txt」が末尾にあるファイルを対象とする。末尾を表すのが$で、.を表現するにはその前に\を書くので\.となる。
他にd:という指定があってフォルダ名を指定することができるがここでは不要。

2.行フィルタで前方一致の行を除く
^abc
先頭を表すのが^(山型)で、abcから始まる行という意味になる。
行フィルタは、ファイルフィルタのようにファイルを用意することがなくダイアログから値を入力して使う。

3.行フィルタで後方一致の行を除く
xyz$
後方を表すのが$(ドル)で、xyzで終わる行という意味になる。

4.行フィルタで前方一致と後方一致の両方で行を除く
^abc.*xyz$
2と3の組み合わせだが、そのあいだに.*(ドットとアスタリスク)が入っている。
.*によって、その位置に何か文字があるかもしれないという意味になる。
ドット:(空白文字以外の)なんでもよい文字
アスタリスク:直前のパターンが0回以上の繰り返し(0回を含むので何もなくてもよい)

このあたりが、正規表現の難しいところだな。
正規表現については、本が1冊書けるくらいの複雑な仕組みらしい。その全貌を知る必要はなく、最低限のことを把握すればよい。近々以下のサイトで勉強してみようかね。
正規表現とは?

-ソフト開発

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

WinMegeのフィルタについて今すぐ知りたいならココを読め

WinMergeでフォルダやファイルを比較して差分を把握することは、プログラムに関わっていれば日常あること。効率よく比較したいならフィルタを使うべし。

no image

イテレータ(Iterator)

あるコンポーネントで初めて出会いました。コンポーネントがバージョンアップされたときに、オブジェクト指向的な作りに一新されて、いろいろ変わったのですが中でもイテレータという訳の分からないものに遭遇して、 …

no image

random

JavaScriptと格闘してみたよ。 テーマはランダム。 10個の画像の中から、任意の3個の画像をWebサイトに表示する、 ってのが要求仕様。 Math.floor(Math.random() * …

no image

VisualStudio2005

帰国後の1週間を乗り切った。 バカンスモードの体からビジネスモードに切り替えるのは、 なかなか厳しかったが、この1週間で徐々に慣れてきた。 夢のような南国リゾートとは違い、現実世界は厳しい。 さて、V …

PDFアレコレがVectorに掲載されたよん

Vectorのカテゴリとしては文書作成⇒PDF。PDFアレコレというフリーソフトが掲載されたよん。