ニュース
» 2007年02月22日 14時22分 公開

3分LifeHacking:“ある言葉”が何回出てくるか数える

ドキュメントの中で何かを数える。幅広いデータでよくある作業だが、実はコンピュータに簡単に数えさせられる。特別なソフトのインストールなども不要だ。

[斎藤健二,ITmedia]

 この文章に「ITmedia」という言葉は何回出てくるんだっけ? このExcelシートの中に出てくる「未処理」という言葉はいくつある? こうした数えごとは頻繁に発生する割に、その場かぎりのニーズであることが多く、なかなか自動化しにくい。結局、1つ1つ手で数えていくか……ということにもなりがちだ。

 今回は、ほぼどんなドキュメントでも、その中に特定の言葉が何回出てくるか数える方法を考える。

 基本となるのは、エディタやワープロが備えている「置換」機能だ。これは指定した文字を別の文字に一括して置き換える機能。そして置換時にはいくつの文字を置き換えたかを表示してくれる場合が多い。これを活用する。

 例えば、「ITmedia」という文字の数を数えたい場合は、「ITmedia」を「ITmedia」に置換してみる。すると、ドキュメントの内容は全く変わらないが、置換個数が表示させる=ITmediaという文字の登場回数が分かるわけだ。

 今回は、テキストエディタとして「秀丸エディタ」、ワープロソフトとして「Word」を例に使う。残念ながら、Windows付属の「メモ帳」や「ワードパッド」では置換した個数は表示されない。手にあったエディタで試してみてほしい。

応用1──ExcelやHTMLに使ってみる

 Excelシート内のデータや、表示しているWebページのHTMLソース内の文字も、同様に数えることができる。「このExcelファイルに含まれる○の数を数えよ」と言われたら、ちょっと詳しい人でもCOUNTIFなどの関数を使い始めるわけだが、実は対象となるセルを選択してコピーし、テキストエディタにペーストして数えたほうが速い場合が多い。

 Webページであれば、「表示」−「ソース」を選択すれば、そのページのHTMLがエディタで表示される。あとは同様に、同じ文字列で置換してみればいい。HTMLであれば、下記のような応用法が考えられる。

  • 「http://」の個数を数えることで、リンク先数が分かる
  • 「<」の個数と「>」の個数を数えることで、タグの綴じ忘れが分かる

応用2──あいまいな文字に正規表現で対応

 秀丸エディタであれば、置換の際に正規表現が利用できる。これはDOSでいうワイルドカードのようなもので、例えば、「.」は任意の1文字を表すので、

  • 「.藤」という正規表現は、「斎藤」「伊藤」「近藤」などが対象となる

 これを使えば、「.」を対象に置換すれば、文字すべてを置換するのでドキュメント内の文字の個数が分かる。文字数をカウントするためのソフトやマクロを使わずとも、こうした工夫で対処できる。

 また「?」は、直前の文字の0回または1回の繰り返しを挿すので、

  • 「http.?://」という正規表現は、「http://」や「https://」の両方が対象となる

 この正規表現を使いこなせば、例えば、「ドキュメントの中から、電話番号の個数だけを数えたい」といったことが可能になる。記述例としては、「0[0-9-]..........」を検索対象とすれば、ハイフンが2つ入った10桁の電話番号が対象となる。10桁以外の数字は対象外だ。

 秀丸の場合、検索対象を\fと\fでくくって、置換対象として\1と入力すると、対象となった検索対象の内容を置換対象にしてくれる。例えば、「\f0[0-9-]..........\f」を検索対象とし、置換対象を「\1」とすれば、電話番号の個数だけを数えて内容は置き換えない。ちなみに、置換対象を「電話:\1」とすれば、対象となる電話番号すべての頭に「電話:」という文字が追記される。

正規表現でハイフン入り10桁の電話番号を対象とし、頭に「電話:」と入れる置換方法。置換を行えば電話番号の個数も分かる

 正規表現自体については深く説明しないが、これまで手作業で行わざるを得ないと思いこんでいた作業でも、ルールさえはっきりしていればほぼ自動化できる力を持っている。先の電話番号を示す正規表現も、よりスマートな書き方があるので、実際に利用しつつ調べてみてほしい。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ