186. 検索と置換
検索
[検索]メニューから[検索]を使います。検索ダイアログが開きます。
ダイアログは検索テキストボックス、検索モードラジオボタン、検索オプションチェックボックスからなります。
検索テキストボックス | 検索を行う文字列を指定します。検索モードが「正規」の場合は、正規表現を指定します。 その他の場合は、「\を通常文字として検索」をOFFにすると\文字を使って次のいろいろな指定がおこなえます。 \t タブ文字 \n 改行 \\ \文字 \x1aのように\xに続けて2桁の16進数を指定するとバイナリデータの検索をおこないます。 \xx5a5cのように\xxに続けて複数桁の16進数を指定すると、複数バイトのバイナリデータの検索をおこないます。 |
検索モードには、4つのモードがあります。
基本 | 最も基本なモードです。文字コードの一致を判断して検索します。 |
曖昧 | 英大小文字、半角全角文字を同一視して検索をします。 |
単語 | 半角の英単語を検索します。たとえばwoを検索するとwordにはマッチしません。 |
正規 | 正規表現を使って検索をします。 |
検索オプションには次のチェックボックスがあります。
大文字と小文字を区別 | ONにすると半角英文字の大・小を区別します。OFFにすると同一視します。 ※「曖昧」モードではONにしても区別しません。 |
\を通常文字として検索 | ONにすると\文字を通常に検索します。OFFにすると\を検索するには\\を指定します。 ※「正規」モードでは無効です。 |
空白と記号をスキップ | ONにすると空白と記号(半角と全角の両方に対応しています)や改行をスキップして検索します。メールの文章など語句が改行で区切られていても検索が可能です。 ※「正規」モードでは無効です。 |
AND検索 | ONにすると空白で区切られた語句のAND検索をおこないます。まず先頭の語句を検索して、同じ段落に2番目以降の語句があるかを調べます。段落内にすべての語句があれば、検索マッチと判断して、先頭の語句にジャンプします。 たとえば「text if」と指定すると、「text」と「if」の両方を内容に持つ段落を探して、「text」にマッチします。 ※空白には半角空白を指定してください。 ※検索文字の色分けは、先頭語句のみおこなわれます。 ※「正規」モードでは無効です。 |
上方向へ検索 | ONにすると、検索語をファイル先頭方向へ検索します。 |
すべてのタブを対象 | ONにすると、すべての文書タブを検索します。 |
見出し内の検索 | ONにすると、カーソルのある見出し内だけを検索します。 |
このほか次のボタンがあります。
OK | ダイアログを閉じ、検索語を検索して見つかればその位置へジャンプします。 |
キャンセル | ダイアログを閉じます。 |
その他の検索 | その他の検索メニューを表示します。 |
「その他の検索」メニューの内容
絞込み | ダイアログを閉じ、指定した検索語を含む段落のみを絞り込んで表示します。※折りたたみはすべて解除されるのでご注意ください。折りたたみを解除したくない場合は[検索]メニューから[新検索]を使ってください。 |
絞込みの解除 | 絞込みを解除します。 |
アウトライン索引 | 「アウトライン索引」コマンドを実行します。 |
アウトライン検索 | 「アウトライン検索」コマンドを実行します。 |
高度な検索 | ANDやOR条件を指定できる高度な検索ダイアログを表示します。 |
Textc Grep | 「Textc Grep」コマンドを実行します。 |
フォルダ内の検索 | 「フォルダ内の検索」コマンドを実行します。 |
高度な検索
検索ダイアログで「高度な検索」を指定すると、「高度な検索」ダイアログに切り替わります。ANDやORを使って検索条件を複数組み合わせた検索をおこないます。
一つの検索条件はWZ6の普通の検索と同じに指定します。検索文字列、モード、オプションを指定します。
「追加」から「AND条件を追加」を選ぶと、現在の条件に、新しくAND条件を追加します。
「追加」から「OR条件を追加」を選ぶと、現在の条件に、新しくOR条件を追加します。
検索は段落ごとにおこなわれます。一つの条件に一致する段落を見つけると、他の条件にもマッチするかどうか調べて、すべてにマッチする場合に検索が成功します。
条件の組み合わせは木構造で表示されます。
OR条件は2つに対等に枝分かれした木構造で、AND条件は子供の枝に分かれた木構造で表示されます。
この枝分かれ構造で表現できるANDとORの組み合わせに対応しています。
正規表現を使った検索
普通の検索では、テキストに含まれる文字列を指定して検索することができますが、次のような検索を簡単におこなうことはできません。
-
「花子さん」または「次郎さん」を検索
" "や" □□ "など、半角スペースと全角スペースの列を検索
「数字-数字」などの特定のパターンを検索。
正規表現を使うとこれらの検索を簡単におこなうことができます。OR検索をおこなったり、表記の揺れを整える校正作業等に活用してください。
正規表現を使って検索するには、検索ダイアログで「正規」をONにしてから「検索」に正規表現を指定します。
正規表現による検索の例
-
「花子さん」または「次郎さん」
花子さん|次郎さん
半角スペースと全角スペースの列
\s+
「数字-数字」のパターン
\d-\d
改行だけの空白行
^$
行頭のスペース
^\s+
行末のスペース
\s+$
E-mailアドレス
[-A-Za-z0-9.]+@[-a-z0-9.]+
使用可能な正規表現メタキャラクタ
正規表現では、検索文字列に次の記号を指定すると、特別の意味を持ちます。その他の文字は通常の検索文字列として使えます。
^ | パターンの先頭にあるときのみ、行の先頭を表します。 |
$ | パターンの末尾にあるときのみ、行の末尾を表します。 |
. | 改行を除いた任意の1文字を表します。(全角も1文字) |
[...] | [ ]内に含まれる任意の1文字を表します。 [a-z]、[あ-お]のような範囲指定も可能です。(全角文字はシフトJISコードに基づいた範囲になります) []内では、\t,\s,\w,\d,\[,\],\\,\xXXの指定で、タブ、空白、英数字と_、数字、[、]、\、文字コードXXの文字、が指定できます。 |
[^...] | [ ]内に含まれない任意の1文字を表します。範囲指定も可能です。 |
(...) | (...)を1つの文字として扱います。また、くくられた範囲をタグに記憶します(最大9個)。 |
$N | タグに記憶したN番目の文字列にマッチします。「\N」と書いても同じです。 |
* | 直前パターンの0回以上のくり返し。 |
+ | 直前パターンの1回以上のくり返し。 |
? | 直前パターンが0個または1個であることを表します。 |
{n,m} | 直前パターンのn回以上、m回以下のくり返し。 nとmはそれぞれ30程度まで指定できます。数が多いと「正規表現が複雑すぎます」のエラーになる場合があります。 ※a{3,5}a のように直後に同じ文字を書いたときに直後の文字の指定が無視されることがあります。 ※"aaaaaa"に対してa{3,3}を検索した場合は1回だけマッチします。マッチする場所は不定です。 ※この他にも、想定される動作と実際の動作が異なる場合があります。 |
{n} | {n,n}と同じです。 |
< | 単語の始め。 |
> | 単語の終わり。 |
| | 和演算子(AまたはB)。 |
\c | 正規表現cの意味を打ち消し、文字c自身を表します。 「.」は「\.」、「+」は「\+」、そして「\」自身は「\\」で表します。ただし、次は特別の意味を持ちます。 |
■\cの特別な場合
\w | 英数字と「_」 |
\W | \w以外 |
\s | 空白文字(タブ、全角空白も含む) |
\S | 非空白文字 |
\d | 数字 |
\D | 数字以外 |
\b | 英単語の始めまたは終わり "\bWORD"や"WORD\b"の指定が可能 |
\B | 英単語の途中 "\BWORD"や"WORD\B"の指定が可能 |
\n | 改行(CR+LFまたはLF) |
\r | 復帰(CR) |
\t | タブ |
\x00〜\xFF | 文字コード |
\000〜\777 | 8進数表記による文字コード |
※正規表現の「^」や「$」はそれぞれ行頭や行末であることを表す記号であり、改行を表す文字ではありません。
置換
[検索]メニューから[置換]を使います。置換ダイアログが表示されます。
検索と同じように「検索」に探す語句を指定し、「置換」に置換文字列を指定します。
OKすると一つ一つ検索して置換するかどうかを問合せします。
置換テキストボックス | 置換文字列を指定します。検索モードが「正規」の場合は、$1などの正規表現のタグ指定も使用できます。 その他の場合は、「\を通常文字として検索」をOFFにすると\文字を使って次のいろいろな指定がおこなえます。 \t タブ文字 \n 改行 \\ \文字 置換文字列を空にすると、検索で見つけた文字列を削除する動作になります。 改行を削除して段落を連結するには「検索」に「\n」、「置換」に「空」を指定します。 |
置換には次のオプションがあります。
置換の確認 | ONにすると一つ一つ検索するたびに置換の確認をします。OFFにすると確認せずに直ちに置換をします。 |
範囲内の置換 | ONにすると選択範囲内だけで置換をします。なお、箱型範囲選択時はこの機能は使用できません。 |
全置換 | このコマンドを選択すると文章の全体で置換をします。 置換個数が1000個を超える場合は高速化のため、編集をおこなった行番号の太字表示はクリアされます。 |
正規表現を使った置換をする場合は、次の説明を読んでください。
正規表現による置換
例えば、「下さい」という言葉を「ください」に置換することを考えてみましょう。
検索文字列 | 下さ |
置換文字列 | くださ |
という置換を無条件で行ってしまうと「木下さん」が「木くださん」となってしまいます。
下さらない | →くださらない |
下さい | →ください |
下さる | →くださる |
下されば | →くだされば |
下さろう | →くださろ |
という置換を個々におこなう必要があります。そこで使用するのが『タグ付き置換』という方法です。
「下さ」までが共通で次の一文字が「らいるれろ」のいずれかであるものをまず検索します。
検索文字列 | 下さ[らいるれろ] |
置き換えるときは、「らいるれろ」のどれかから実際に見つかった文字を使う必要あります。
検索文字列 | 下さ([らいるれろ]) |
置換文字列 | くださ$1 |
見つかった「らいるれろ」のどれか一文字は ( ) によりタグとして記憶され、$1 で置換文字列に複写されます。
このように正規表現を使った置換を活用すれば、文章の校正作業もできます。例を2つ示します。
カタカナ単語の−(マイナス)をー(音引き)に置き換える
検索文字列 | ([ァ-ヶ])− |
置換文字列 | \1ー |
段落はじめの半角スペース2個を全角スペースに置き換える
検索文字列 | ^ロロ[^ロ] | (ロは半角スペース) |
置換文字列 | □ | (□は全角スペース) |
置換文字列では$1のように以下のメタキャラクタが使用できます。
$N | タグに記憶したN番目の文字列を挿入します。「\N」と書いても同じです。 |
$+ | 最後に括弧を使ってマッチした文字列を挿入します。 |
$& | マッチした文字列全体を挿入します。 |
$` | 段落先頭からマッチした文字列までを挿入します。 |
$' | マッチした文字列の後ろから段落末尾までを挿入します。 |