文の間のシングルスペースをダブルスペースにするためのワイルドカードの置換について、昨日参加した伊藤潔人さんのセミナーで話題になりました。
伊藤潔人さんがWordを読み解くとこうなるのか!という非常に楽しいセミナーでした。このセミナーでは、Wordの根本思想から説明をいただきましたし、便利技もたくさんでました。
「段落」の概念は、プログラミングをする上では必ず必要になります。プログラムのエラーが起きやすい部分かもしれません。
「段落」の概念はプログラミングだけではなく、当然、Wordを使いこなす上でも大切な概念です。
こういう思想部分からのアプリケーションの説明というのは、アプリケーションの歴史を理解し、かつOfficeのアプリケーション同士の関係を把握されている伊藤潔人さんならではだと思います。
さて本題にもどります。
Wordでは、エディタソフトなどで言われる「正規表現」のことをワイルドカードと呼んでいます。
ワイルドカードが使えると、何かと便利です。(私はワイルドカードをよく用いるので、「山猫の手」を作りました。)
表題の目的に対して、私が使うワイルドカードの式を紹介します。
完璧な式を書こうとすると、それを考えるだけで時間がかかってしまいます。
複数回に分けて実施すること、自分の目で確認しながら置換をすること、もし一括置換をするのであれば、蛍光ペンでマーキングして必ず確認できるような状態にすることをお勧めします。
あと、漏れがないように、必要以上のものを拾ってしまう検索式を書くことをお勧めします。
最初はなじめなくて、思考停止状態になるかもしれません(私も長い間そうでした)。
1つだけでもいいのでそれを何度か使ううちになじむと思いますので、焦らずに使っていきましょう。
たとえば、以下のような例になります。
「ワイルドカードを使用する」のチェックをつけて以下の文字列を入力します。
<目次>
ワイルドカードの式
検索する文字列:([.\!\?]{1,1}) ([A-Z0-9]{1,}) 置換後の文字列:\1 \2
「検索する文字列」において、 ([.\!\?]{1,1}) と ([A-Z0-9]{1,}) との間に半角スペースが1つ入っています。
また、「置換後の文字列」において、 \1 と \2 との間に半角スペースが2つ入っています。
ワイルドカードの意味
ピリオド、エクスクラメーションマーク、クエスチョンマークいずれかの後に半角スペースが一つあり、その後に大文字の英字か数字が記載されているものを検索対象にしています。
「小文字の英字は文頭に記載されていない」という前提で検索をしています。「小文字の英字」を含めてもいいでしょう。お好きな方法をお選びください。
数字も入れています。「文頭が数字で始まることがあるかもしれない」という考えから、このような記載にしました。
このような検索式にすると、特許でよくある「FIG. 10」のような記載もヒットします。だから確認が必要です。
文末のダブルクォーテーションとピリオドの位置関係についてルールをお持ちであれば、それも検索式に反映すればいいと思います。
正解はないと思います。対象とする文章に対して、どのようなステップを踏んでどのようなチェックをするのかという方針を自分で決めて、検索式を作ればいいと思います。
別の記載方法
同じ式を別の記載にすることもできます。
●回の繰り返しがある場合には、{●,●} 「●回以上●回以下の意味」 と書かずに、以下のように{●}とだけ記載することもできます。
検索する文字列:([.\!\?]{1}) ([A-Z0-9]{1,}) 置換後の文字列:\1 \2
繰り返しが1回の場合には、繰り返しの記載自体を省略できます。
検索する文字列:([.\!\?]) ([A-Z0-9]{1,}) 置換後の文字列:\1 \2
参考資料
かつてWordのワイルドカードのセミナーを開催していたことがあります。
以下の資料をご覧ください。ある程度のルールと例文が書かれています。
最初はゼロから自分で作るのではなく、既存のワイルドカードの式を(コピペして)使うのがいいと思います。
ワイルドカードの結果には必ず自分が責任を持つという姿勢で取り組む必要があります。
私も何度か試行錯誤して式を作ります。いつも慎重に扱います。
参考URL
Wordのワイルドカードではありませんが、正規表現の考え方を学ぶには、帽子屋さんのサイトが非常に参考になります。
日ごろからいろいろお世話になっている大先輩です。