1月に開始した3回連続のワイルドカード講座で受講生からいただいた質問への回答です。
今回の質問は、段落記号直後の西暦(2000年代)を探す場合の検索方法です。
検索する文字列:^132[0-9]{3}年
上記のように記述したのですが、うまくいきません。
どのようにしたらよいのでしょうか。
<目次>
検索できない理由
ワイルドカードで段落記号を検索する場合、アスキーコードを使って^13と記述します。
上記の場合、^の直後に続く数字は13を意図したのですが、Wordが132と読み間違えてしまっています。
その結果、^132を検索対象としてしまうため、段落記号+2を検索できなくなってしまうのです。
アスキーコードとは
以下のページにアスキーコードの一覧があります。アルファベットや数字をコードで表現します。
上記のリンク先にあるのですが、^の次に書かれている数字はASCIIコードの10進数の値です。
この数字を指定すると特定の記号や文字を意味します。「^0」~「^255」まで定義されています。
以下が、^13や^9の記述の理由です。
このページで10進数の132に該当する記号は定義されていません。なので、何も検索できないという結果になります。
対策1:アスキーコードの直後の数字は半角角括弧で囲む
このようなことにならないように、アスキーコードの直後に数字を記述する場合には、数字であることを明確に宣言するため半角角括弧で囲んでください。これで検索できます。
検索する文字列:^13[2][0-9]{3}年
対策2:アスキーコードで数字を記述する
上記以外にも対策はあるのですが、おすすめはしません。可読性が低くなるからです。
ただ、知っていても損はないと思うので、簡単に説明します。
上記で紹介したアスキーコードで数字を探してみます。0や2は以下のように定義できます。
つまり、この法則を利用すれば、2を^50と記述できることになります。
検索する文字列:^13^50[0-9]{3}年
再度書きますが、一般的にこの方法はおすすめはしません。何を検索したいのか理解しづらいからです。
ただ、検索条件が複雑になり、以下のメッセージが表示される場合があります。
この時に[2]を^50と書き換えることで上記のエラーメッセージを消せる場合があります。この時はぜひアスキーコードを使って記述してみてください。