住所にマッチする正規表現

ありそうで意外と見あたらなかった、住所にマッチする正規表現。と言うことで、作ってみました。

今回は、住所と、そうでないものが混じっている中から、住所の文字列と思われるものを抽出して、Googleマップへのリンクを張るようなブックマークレットにしました。

ブックマークレット

サンプル (上のブックマークレットを単にクリックすると試せます)

  • 東京都渋谷区恵比寿1-19-15 ウノサワ東急ビル5階
  • 北海道札幌市中央区南3条西2丁目狸小路2丁目
  • 神奈川県足柄下郡箱根町小涌谷503
  • 京都市中京区六角通東洞院東入ル
  • 紫波郡矢巾町大字南矢幅第13地割123番地
  • 静岡県下田市一丁目12-17
  • 大阪府大阪市中央区上町A番23号

Googleマップへのリンクと言うことで、下記のような条件としました。

  1. 住所はできるだけ漏れなくヒットさせる
  2. ビル名まではヒットさせない (Googleマップが誤認識してしまう場合が多いため)
  3. 住所でないものにはできればヒットさせない

ただ、特殊な住所の認識に無理したり、細かい番地までは指定されていないものまでヒットの対象にすると、関係ないものまでヒットしてしまって、バランスの調整がかなり難しいです。なので、番地まで指定されているもののみをヒットの対象にして、かつ、あまり特殊な住所はヒットされなくても諦めることにしました。と言いつつ意外とヒットしていますが偶然の産物です。

で、上のブックマークレットで使っているJavaScriptがこちらですが、結局正規表現一発とは行きませんでした・・・。もうちょっとがんばればいけるかもしれないけど。

テストはいちおういくつもの住所で行っていますが、住所っぽいもの中心に試しているので、全然見当外れのものにマッチしまくっていたら済みません。

ソース

作る前に、他のサイトさがしたんですけど、本当に情報が見あたらなくて。最初に見つけたのはここくらいでした。
http://d.hatena.ne.jp/shinichitomita/20060713/1152800000
さっき作り終わってから
http://blog.yappo.jp/yappo/archives/000466.html
見つけました。ソース見られなかったけど、ライブラリーだからか、住所情報を内部にかなり持っているようですね。

追記:
Kei_9さんと言う方が、SleipnirのSeaHorse、FirefoxのGreasemonkeyプラグイン用のスクリプトに仕立ててくれたみたいです。役に立ったみたいで何よりです。

追記2
tarchanと言う方が、改造版と合わせてgistに入れて連絡をくださいました。 私のオリジナルはこちら、次のバージョンが色変更と.comへ変更したもので、3つめのバージョンがマッチした住所のどれかに直接ジャンプするバージョンとのことです。tarchanのエントリーはこちら。gist知りませんでしたが、今後この手のコードを公開する際には試してみたいと思います。

Trackback URL for this post:

http://nonn-et-twk.net/twk/trackback/51
from なるとブレイク on 木, 2008-07-24 08:05

iPhone は Mac と同じ Safari が使えるので、目的地を探すときいつでも検索できますよね!ただ、目的地のページを見つけても、住所の表記しかなかったり、地図がついてても見づらかったり...

0

ライセンス

これはイイですね!
GPLで公開しているソフトウェアに移植して組み入れたいのですが、
こういうことはできるでしょうか。
つまり、このスクリプトのライセンスはどんな感じに決めていらっしゃいますか。

ありがとうございます

ライセンスのことは考えていなかったのですが、長いものでもありませんし、
GPLに組み込めなくなるのは本位ではないので、下記と考えてみました。
・(修正済BSDライセンスみたいに) 著作権表示だけ残してほしい

それと、興味として、何に組み込まれるか知りたいので・・・
・何に組み入れられたかを (こっそりでも良いので) 作者に教えていただきたい。
ただし、オープンソースプログラムに組み入れる場合は、最初のオープンソースプログラムへの組み入れ時のみでOKです。これは、GPLと矛盾したくないためです。

では、役立てていただければ幸いです。

組み込み対象

ご返事ありがとうございます。

組み込もうと思っているのは、おもに携帯むけのirc clientであるkeitaircというソフトウェアです。
http://keitairc.sourceforge.jp/

いま開発しているcvs最新版では、ircでやりとりされているメッセージに対し、
regexpとそのアクション、といったかたちでさまざまな処理をプラグイン的に追加できるようにしています。

その一環として、住所っぽい文字列をGoogle Mapsへのリンクに置き換えるプラグイン・スクリプトも用意してあります。
ただ現状はサンプルっぽい位置づけで、regexpが単純すぎて、ちょっと使い物にはなりません。
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/keitairc/lib/plugins/30prefectures?rev=1.4&view=markup
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/keitairc/lib/plugins/31distinct?rev=1.4&view=markup

プラグインなので、いずれ私以外のかたがもっとイカした処理内容に改善してくれるかも、
と後回しにしていたのですが、まさにそういうcoolなregexp定義を拝見したので、
ぜひ採り入れてみたいな、とおもったわけです。

組み入れた際には、元記事のURLとお名前をreferして、
…の処理は「住所にマッチする正規表現」 のコードに基づいています。
というふうに明記しようと思っています。

トラバありがとうございます

本来はこちらからトラックバックするべきでしたが、失念していました。
大変失礼いたしました。

勝手に手を入れてエントリーで紹介してしまいましたが、とても便利に使わせていただいております。
正規表現というヤツはどうにも苦手でして、Grepなどで使用出来るテキストエディタやエクスプローラの検索拡張アプリなどに備わっているにもかかわらず使いこなせていないというヘタレでございます・・・

名前の入力欄が見あたりませんでしたのでここに書いておきます。