日常のタスクで生産性を向上させるための正規表現の使い方

regular-expressions-usage-featured

正規表現の基本的な力にすでに精通しているのであれば、それがどのように使われるかに興味があるかもしれません。基本を復習したい場合は、当社の正規表現チートシートや初心者向けガイドをチェックしてください。以下は、正規表現が生産性を向上させることができる日常のタスクのいくつかです。

1. 複雑なルールでファイル名を変更する

regular-expression-uses-rename-files

賢いコンピュータユーザーであれば、シンプルなテキスト文字列と増加カウンターを使用してファイルの山の名前を変更することができます。しかし、特定のプロトコルに従ってファイル名を変更するのはもっと難しいです。たとえば、現在のファイル名、現在のディレクトリ、最終変更日、またはその他の属性に基づいてファイルを名前変更したいとします。正規表現は、どのファイルを変更するかを注意深く指定し、複雑なルールで名称を変更するのに役立ちます。ガイドラインに従って数千のファイルを改名する必要がある場合、これは非常に貴重です。

PythonやPerlなど、正規表現をサポートする任意の言語を使用してこの機能のスクリプトを作成できますが、ソフトウェアオプションも利用可能です。macOS用のA Better Finder Rename、Windows用のReNamer、Linux用のMétamorphoseをチェックしてください。

2. 整形されたデータをスプレッドシートで検索する

regular-expression-uses-spreadsheets

ZIPコードのように整形されたすべてのデータを探してスプレッドシートをスクロールしたことがあるなら、正規表現はあなたの速い友達になるでしょう。正規表現は、特定の形式でフォーマットされたデータを返すために存在します。たとえば、すべての人気フォーマットで有効なアメリカのZIPコードを見つけたい場合、次のような正規表現を使用できます。

^\d{5}(?:[-\s]\d{4})?$

少し分解してみましょう:

  • ^ は文字列の開始を示します
  • \d{5} は5桁の数字にマッチします
  • (?: はグループを開始します
  • [-\s] はスペースまたはダッシュにマッチします
  • \d{4} は最後の4桁にマッチします
  • )? は前のグループがオプションであることを示します
  • $ は文字列の終了を示します

この正規表現は、5桁のZIPコードとオプションの4桁の修飾子があるZIPコードの両方にマッチします。

人気のスプレッドシートプログラム(Excelなど)は、正規表現を最初からサポートしていないことが多いです。そのため、少しVBScriptを使うか、データをクロールするためのシンプルなPythonプログラムを書く必要があります。コードに慣れていれば、このタスクはそれほど圧倒されることはないでしょう。

3. 高度な検索と置換

regular-expression-uses-find-replace

正規表現を使用してテキストを検索および置換するためのサポートを提供する驚くべきアプリケーションもあります。AdobeのInDesignやWordでは正規表現をサポートしています。各エンジンには独自の実装の特徴があり、どちらも完全とは言えませんが、仕事はこなせます。Wordでは、これを使用して書面の日付の書式を並べ替えたり、略語にピリオドを追加したりできます。さらに強力な機能が必要な場合は、PowerGREPのようなサードパーティツールを使用して、完全なRegExエンジンを搭載したさまざまなテキストドキュメントを検索できます。

4. 内容でファイルを検索する

regular-expression-uses-grep

grep は、UNIX系プラットフォームで利用可能な最も強力であまり活用されていないツールの1つかもしれません。このコマンドラインユーティリティは、デフォルトで正規表現をサポートしており、正規表現パターンを使用してファイルの内容を検索できます。リッチテキストファイルには信頼性がない場合もありますが、プレーンテキスト、データ、スプレッドシートには非常に役立ちます。

macOSやLinuxでは、コマンドラインを通じてgrepに組み込みアクセスできます。Windowsを使用している場合でも、先に述べたPowerGREPを使用して、何も置換せずに内容でファイルを検索できます。

結論

正規表現を使用することに慣れると、非常に強力なツールを利用できるようになります。何か視覚的なものを探しているときは、少し考えて、同じことを行うための簡単なRegExを書けるかどうかを考えてみてください。プログラマーでなくても、正規表現から多くの利益を得ることができます。

画像クレジット: Find and Replace, Grep-tutorial-05