2. Microsoft Word の文字列検索 

   2−1  文字列検索機能
   2−2  ワイルドカードを使った検索
   2−3  ワイルドカードを使った置換

2−1  文字列検索機能

Microsoft Word(に限らずワープロなど)の検索機能を使ったことはあるでしょうか。 実は使ったことがないという人も多いかも知れません。
検索機能を使えば、文章中の言葉をいちいち目で読みながらひとつひとつ探さなくても一発で見つけることができます。 今ご覧のブラウザにも検索機能がついているはずです。 試しに、このページの中で "語順" という単語を、ここより下から見つけてみましょう。 検索機能を使えば一瞬です。
[編集(E)]>[このページの検索(F)...](Internet Explorer の場合)で検索用の窓が開きます。
Win7までのWindowsで動く多くのソフトが、検索機能を [編集(E)] メニューの中に置いていました。 検索は文字列置換作業とセットで行われることを考えると、納得できる位置ではあります。


2−2  ワイルドカードを使った検索

通常の検索機能は、文書(ファイル)中からひとつの文字列を検索してゆきますが、 例えば、"平成○○年度" という文字列を検索したい、 21年度も23年度も25年度も見つけだしたいという時があります。 それぞれの年度の文字列を繰り返し検索すれば確かに目的は達成できるのですが、 正規表現を使えば、検索条件にひとつの特殊な文字列(検索パターン)を与えることによって、 複数の年度を記した文字列を同時に検索対象とすることが可能です。

まだ適当なエディタを手に入れていない人のために、多くの人が持っていると思われる Microsoft Word の文字列検索機能から紹介します。
Word で文字列を検索する時のワイルドカードは、Windows のファイル検索に おけるワイルドカードに比べて非常に強力で、もはや一種の正規表現と呼んでも 構わないくらい充実したものです。

◆ Word 2013 のワイルドカード(ヘルプの文章を参照しました)◆
・任意の1文字     ?  …… "s?t" で "sat" や "set" を検索できます.
・任意の文字列     *  …… "s*d" で "sad" や "started" を検索できます.
・単語の先頭      <  ……  "<inter" で "interesting"や"intercept"は
                        検索できますが "splintered" はできません.
・単語の末尾      >  ……  "in>" で、"in" や "within" は検索できます
                     が "interesting" は検索できません.
・指定した文字のい  [ ] …… "w[io]n" で "win" と "won" の両方を検索
 ずれか                 できます。
・指定範囲内の任意  [-] …… "[r-t]ight" で "right" や "sight" を検索
 の1文字                できます。範囲は昇順で指定します.
・括弧内の文字を除  [!] …… "m[!a]st" で "mist" や "most" は検索でき
 く任意の1文字             ますが、"mast" は検索できません.
・括弧内の範囲に含  [!x-z] …"t[!a-m]ck" で "tock" や "tuck" は検索で
 まれる文字を除く            きますが、"tack"や"tick"は検索できません.
 任意の1文字
・直前の文字または  {n} …… "fe{2}d" で "feed" は検索できますが,"fed"
 式をn個                は検索できません。
・直前の文字または  {n,} …  "fe{1,}d" で "fed"や"feed"を検索できます.
 式をn個以上
・直前の文字または  {n,m} … "10{1,3}" で "10", "100", 及び "1000" を
 式をn〜m個              検索できます.
・直前の文字または  @  ……  "lo@t" で "lot" や "loot" を検索できます.
 たは式を1個以上

・かっこを使ってワイルドカードと文字列を入力すると、検索条件の優先順位を
 指定することができます。たとえば、"presorted" 及び "prevented" を
 検索する場合、「<(pre)*(ed)>」と入力します.
\n のワイルドカードを使うと,文字列を検索し,語順を変更したものと置換す
 ることができます. たとえば,
 [検索する文字列] ボックスに「(Newton) (Christie)」と入力し,
 [置換後の文字列] ボックスに「\2 \1」と入力すると,
 "Newton Christie" が検索され, "Christie Newton" に置き換えられます.
◆ 検索/置換ボックスに入力できるコード(同上)◆
・段落記号        ^p または ^13
・タブ文字        ^t または ^9
・ASCII文字       ^nnn  ( nnn は文字コード)
・ANSI文字        ^0nnn  ( nnn は文字コード)
・全角ダッシュ      ^+
・半角ダッシュ      ^=
・キャレット       ^^  ( ^ 自身)
・任意指定の行区切り   ^| または ^11
・段区切り        ^n または ^14
・セクション区切り    ^12
・任意指定の頁区切り   ^m
・改行しないスペース   [s]
・改行しないハイフン   ^~
・任意指定のハイフン   ^-

[ワイルドカード使用]オフの時のみ使用できるもの
・グラフィックス     ^g

[ワイルドカード使用]オフの時のみ使用できるもの
・任意の1文字      ^?
・任意の数字       ^#
・任意の英字       ^$
・脚注記号        ^f または ^2
・文末脚注記号      ^e または ^19 または ^21
・フィールド       ^d
・空白文字        ^w
・コメント        ^a
・セクション区切り    ^b
・クリップボードの内容  ^c
・「検索する文字列」ボックスの内容  ^&
詳細は、お手持ちの Microsoft Word のヘルプを参照して下さい。


2−3  ワイルドカードを使った置換

Word をお持ちの人は、以下のことを試してみましょう。

(1) 新規文書を作成し、以下の4行を入力する。

 平成25年度国語科
 平成26年度社会 ←「科」でないことに注意 
 平成27年度数学科
 平成28年度理科


(2) リボンの[ホーム]タブ>[編集]グループ>[置換] メニューを実行する。
  その際、オプションの中の「ワイルドカードを使用する」を選択する。
replace

(3) 「検索する文字列」と「置換後の文字列」を次のように入力する。
 検索する文字列(N):  平成(??)年度(*)科
オプション:ワイルドカード
 置換する文字列(E):  H\1年度\2科
 ※ ( ) ? * \1 などは半角文字でなければなりません。

(4) [すべて置換(A)] ボタンをクリックする。

実行後、文書中の文字列が以下のように置換されたでしょうか。

 H25年度国語科
 平成26年度社会課 ← 置換されていないことに注意 
 H27年度数学科
 H28年度理科


ほとんど同じ内容の前年度文書を使いまわしする時など便利かと思います。