3月26日(土)の名古屋でのワードマクロ勉強会 では、ワイルドカードの置換・検索を学びます。
Wordそのもの、またはワードマクロの楽しさは、ワイルドカードの理解と比例します!!
さて、ワイルドカードの置換・検索を学びはじめると気がつくのですが、ゼロ文字以上の特定の文字列を探す検索式がないのですね。
たとえば、「ジャッキーチェン」を探す場合。
記載には多少の揺れがありまして、
- 「ジャッキーチェン」
- 「ジャッキー□チェン」 (□は全角スペース)
- 「ジャッキー_チェン」 (_は半角スペース)
- 「ジャッキー□_チェン」
- 「ジャッキー□□チェン」
などがあるとしましょう。
これらをすべて検索するワイルドカードの検索式を考えてみましょう。
「ゼロ文字以上の任意の文字」は、「*」がありますから、よくある検索式は、以下の通り
検索する文字列: ジャッキー*チェン
これでもできますよ。
つまり、ワイルドカードの記号である「アスタリスク:*」が、ゼロ文字以上のどのような文字にも対応するので、たとえば、
- アスタリスクがゼロ文字(何にも対応しない場合) →「ジャッキーチェン」
- アスタリスクが全角スペース(□)1文字の場合 →「ジャッキー□チェン」
となります
ただし、アスタリスクは複数の文字列や改行マークまで含むことがあります。
よって、
の文章では、以下のような選択がされてしまいます。
アスタリスクが、「のファンクラブに入りました。(改行)ジャッキー」に対応しているのですね。
なので、正確に「ジャッキーチェン」や「ジャッキー□チェン」だけに検索対象を絞り込むことができないのです。
あるいは、以下のような検索式もありますね。
検索する文字列: ジャッキー[_□]{1,}チェン
(上記で、_は半角スペース、□は全角スペース)
この場合には、「ジャッキーチェン」が検索対象からはずれてしまいます。
なぜなら、上記では、ジャッキーとチェンの間に、1文字以上の半角・全角スペースがはいっているから。
というわけで、1つの検索式だけで様々なパターンを網羅するにはどうしたらいいのでしょうか。
次回、解決策を紹介します。