MIFES TIPS〜実践テクニック集〜TIPSトップ
ファイル比較 検索・置換 グローバル検索・置換 文字コード 巨大ファイル 行(CSV)の整形 正規表現

通常検索/ワイルドカード検索 vs 正規表現

「正規表現」とは、文字列をパターン表現する方法で、そのために「メタ文字」という記号を利用します。
メタ文字には「・・・または・・・」や行頭・行末・語の先頭や末尾を表すものがあり、細かな指定ができます。
以下の例は、通常検索/ワイルドカード検索での検索結果と正規表現での検索結果の比較です。


[1]MIFES1〜MIFES 8まで記述されているファイルの中の「MIFES7」と「MIFES 8」を検索する

[通常検索・ワイルドカード検索]
通常検索では2つの文字列を1度に検索できないので、以下のように2度検索をする必要があります。
また、ワイルドカード検索で「MIFES?」と指定するとMIFES1〜8まですべて検索してしまいます。

Step1:「MIFES7」を検索
通常検索結果

Step2:「MIFES 8」を検索通常検索結果

[正規表現検索]
正規表現で「MIFES7または8」を検索した例です。

MIFES7または8」を検索
正規表現結果

※「一斉表示」をONにして結果の違いをわかりやすくしています。


[2]文中にある「T」から始まる英単語を検索する

[ワイルドカード検索]
文字数の指定ができないため、検索はできますが単語としては検索できません。

例:
(1)【検索】を実行
検索文字列には「T*」を指定。
文字数が指定できないので、行末までが検索対象になる

(2)【↓方向再検索】を実行
2つ目の検索文字列から行末までが検索対象になる


※区切り文字として半角スペースを指定すると、行末までは検索対象になりませんが、半角スペースも検索対象に含まれてしまいます。

[正規表現検索]
「語の先頭」「語の最後」を表すメタ文字を指定すると、単語として検索ができます。

例:
(1)【検索】を実行
正規表現で「Tで始まる語」を指定。
正しく「語」が検索対象になる

(2)【↓方向再検索】を実行
2つ目の「語」が検索対象になる



検索・置換で正規表現

MIFESで、もっとも正規表現を利用するのが検索・置換関連機能です。

【検索・置換・ジャンプ】メニューから実行できる【検索】【置換】【グローバル検索(grep)】や【グローバル置換】などはもちろん、メニューの【ツール】-【文書整形】-【文書整形ダイアログ】から実行できる「T:置換定義ファイルにより複数の置換を実行する」でも、正規表現を利用した置換が行えます。

検索・置換関連のダイアログボックスには、[入力支援]ボタンがあり、クリックして表示されるメニューから正規表現を入力するためのメニューやダイアログボックスが表示されます。

正規表現で検索・置換を行う場合は、「検索方法」を「正規表現検索」にするのを忘れないようにしてください。

検索ダイアログ



キーワード定義で正規表現

MIFESでは特定の文字列(キーワード)を通常の文字色とは異なる色で表示できます。
このキーワードを定義する際にも正規表現を利用できます。

【設定】-【キーワードの変更】を実行すると、「キーワードの変更」ダイアログボックスが表示され、そこから呼び出される「キーワードの定義の変更」ダイアログボックスでキーワードを定義できます。
キーワードは4つのグループ(4色)に分けて定義しますが、その中のキーワード2〜4の「正規表現」をチェックすると正規表現で定義ができます。

キーワードを入力する欄の上にある[正規表現支援]ボタンをクリックすると、「正規表現入力支援」ダイアログボックスを呼び出せます。

キーワード定義ダイアログ



覚えて欲しいメタ文字

正規表現には記号(メタ文字)がたくさんありますが、その中のよく利用する表現方法とメタ文字をご紹介します。
以下、赤字がメタ文字です。

<…または…>

「または」の対象が1文字の場合は、[ ]内にその候補を指定します。
「または」の対象が文字列の場合は、|で区切って指定します。

AまたはB → [AB]
赤または黄または青→ [赤黄青]

XPまたはVista → XP|Vista
大阪または京都または奈良→ 大阪|京都|奈良

<…から…のどれか>

対象が1文字の場合には、候補を-で範囲指定できます。

「0」から「9」のどれか → [0-9]
「あ」から「お」のどれか→ [-]

<…以外>

候補や範囲指定の[ ]内に「^」を記述します。

2,4,6以外 → [^246]
「か」から「こ」以外→ [^-]

<文字の繰り返し>

+」または「*」の前に指定した文字を繰り返します。
「+」は1回以上の繰り返し、「*」は0回以上の繰り返しです。
任意の1文字を表す「.」と「+」や「*」の組み合わせは、覚えておくと便利です。

0文字以上の任意の文字列 → .*
1文字以上の任意の文字列 → .+

==============(”=”の連続) → =+
csvファイル(カンマ区切り)内の数字列(nullの場合あり)→ [0-9]*

<行頭や行末の文字列>

行頭を表す「^」や行末を表す「$」を指定します。

行頭の章番号 → ^[1-9]
行末の「。」か「!」か「?」 → [。!?]$

行全体 → ^.*$



便利な正規表現”検索”の例

正規表現を組み合わせることでより複雑なパターンを指定できます。
ここでは、身近なパターンを例に正規表現の利用方法をご紹介します。

<メールアドレスの検索>

検索例

解説:
メールアドレスは半角英数字と「_(アンダーバー)」「-(ハイフン)」「.(ピリオド)」しか使用できないものとして、「@」の前後にそれらの繰り返し(+)文字列を指定しています。
その他の記号を指定したいときは[ ]の中に追加します。
「-」と「.」はそれぞれメタ文字なので、「\」を付けて記述します。


<電話番号の検索>

検索例

解説:
以下の点をポイントに、電話番号を表現しています。

  • 必ず「0」から始まる
  • 市外局番(または携帯電話の090など)と局番は桁数を固定できない
  • 番号は4桁固定

<カタカナ語の検索>

検索例

解説:
カタカナには半角カタカナと全角カタカナがあり、両方を検索対象にする際には上記のように指定します。
「。-゚」がすべての半角カタカナ文字、「ァ-ヶ」がすべての全角カタカナ文字を表しており、「正規表現入力支援」ダイアログボックスを利用すると簡単に入力ができます。



便利な正規表現”置換”の例

検索できた文字列を取り込むなど、正規表現での置換は強力な編集機能になります。

<文字列を挿入する>

ルールがあれば、文字列の前後や間に文字列を挿入することができます。

例:MIFES1〜MIFES7をMIFES for Windows Ver.1.0〜7.0に置き換える

置換例

解説:
旧文字列で { と } で囲んでおくと、新文字列に\1、\2…と記述した場所にその文字列を取り込むことができます。
この例は、「MIFES」と「数字(1-7のいずれか)」の間に「 for Windows Ver.」を、「数字(1-7のいずれか)」のあとに「.0」を挿入しています。


<文字列を削除する>

新文字列を空白(何も入力しない)にしておくと「削除」にも利用できます。

例:都道府県名を削除する

置換例

解説:
新文字列を指定しないということは、「何もない状態と置き換える」ということになり、結果としては「削除」したことになります。
旧文字列の指定方法によっては、複数の文字列を1操作で削除できます。


<通し番号を振りなおす>

等差数字列の初期化ダイアログ置換のメタ文字に「等差数字列」を指定することができます。

例:「注意1〜」を検索し、【】を付けて通し番号を振りなおす

置換例

解説:
新文字列の「\@」は「等差数字列を1回挿入」を意味します。
なお、最初の置換を行う前には必ず【等差数字列の初期化】機能で初期値や公差を確認・設定してください。

※等差数字列を挿入する「\@」は正規表現以外の検索方法でも利用できるメタ文字です。
※等差数字列について詳細はヘルプなどをご参照ください。


入力支援メニュー

検索・置換関連機能のダイアログボックスでは、[入力支援]ボタンをクリックして表示されるメニューから正規表現のメタ文字を入力できます。
検索文字列(旧文字列) と新文字列では、メタ文字が異なりますので、下図のようにメニューの内容も異なります。

入力支援メニュー


「正規表現入力支援」ダイアログボックス

検索・置換機能のダイアログボックスで検索文字列(旧文字列)欄にカーソルがあるときや「キーワードの定義」時には、「正規表現入力支援」ダイアログボックスで、文字の範囲指定、メタ文字の入力がマウス操作で行えます。

主な操作方法は以下のとおりです。

[1]文字範囲を指定する

@リストから範囲指定したい文字を選択します。
A全角文字/半角文字のいずれかを選択します。
B[↑挿入]ボタンをクリックすると、「正規表現」欄のカーソル位置に入力されます。

正規表現入力支援ダイアログ

[2]メタ文字を入力する

@リストから項目を選択します。
A[↑挿入]ボタンをクリックすると、「正規表現」欄のカーソル位置に入力されます。

正規表現入力支援ダイアログ
※論理行頭/論理行末は「検索位置」の項目にチェックをつけるとカーソル位置にメタ文字が挿入されます。 正規表現入力支援ダイアログ-検索位置


おさらい:「MIFES TIPS」で紹介している正規表現

最後に、本「MIFES TIPS」のページでご紹介している正規表現の記号(メタ文字)を紹介しましょう。
赤字がメタ文字です。

<「MIFES7または8」を検索する> ※「通常検索/ワイルドカード検索 vs 正規表現」で紹介

検索文字列: MIFES[78]

  メタ文字 意味
検索(旧文字列)用 [ ] [と]で囲まれた複数の文字のいずれかにヒットする

<「T」で始まる語を検索する> ※「通常検索/ワイルドカード検索 vs 正規表現」で紹介

検索文字列: #T.*/

 
メタ文字
意味 その他説明など
検索(旧文字列)用
#
語の先頭  
.
任意の1文字 「.*」とすると任意の文字列(0文字以上)を表す
*
直前の文字の0回以上の繰り返し
/
語の最後  

<■で始まる行全体を検索する> ※「巨大ファイル編−見やすくする」で紹介

キーワード定義: ^.*$

メタ文字
意味 その他説明など
^
行の先頭  
.
任意の1文字 「.*」とすると任意の文字列(0文字以上)を表す
*
直前の1文字を0回以上繰り返す

$

行の最後  

<(0)〜(99)で始まる行全体を検索する> ※「巨大ファイル編−見やすくする」で紹介

キーワード定義: ^[-]+.*$

メタ文字
意味 その他説明など
^
行の先頭  
[ ]
[と]で囲まれた複数の文字のいずれかにヒットする [0-9]とすると0から9までのいずれかを表す

-

[ ]内で範囲を指定する
.
任意の1文字 「.+」とすると任意の文字列(1文字以上)を表す
+
直前の1文字を1回以上繰り返す
.
任意の1文字 「.*」とすると任意の文字列(0文字以上)を表す
*
直前の1文字を0回以上繰り返す

$

行の最後  

<4列のCSVファイルで、1-2-3-4の並びを3-1-4-2に置換する> ※「行(CSV)編集編−列を移動したい」で紹介

旧文字列: ^{.*},{.*},{.*},{.*}$
新文字列: \3,\1,\4,\2

 
メタ文字
意味 その他説明など
検索(旧文字列)用
^
行の先頭  
{ }
置換文字列にそのまま取り込みたい文字列
複数あるときは先頭から順に新文字列欄の\1〜に対応する
 
.
任意の1文字 「.*」とすると任意の文字列(0文字以上)を表す
*
直前の1文字を0回以上繰り返す

$

行の最後  
新文字列用
\1〜\4
旧文字列内の{ }内の文字列をそのまま取り込む  


 
↑MIFES TIPSトップ
↑テキストエディタ MIFES 製品情報