住所文字列から都道府県や市区町村の部分を取り出したい時、すぐに思いつくのは正規表現ですが、それでうまくいくとは限りません。「京“都”府」や「四日“市”市」のように名前の中に地名接尾辞となる文字が含まれていると、単純な正規表現では正しい区切り位置を見つけられません。
そんなわけで「都道府県市区郡町村」のような文字が名前本体部分に含まれている都道府県市区郡町村の一覧を用意しました。
このリストを使って、例えば
$pattern = join '|', JSON に入っている都道府県市区郡町村のリスト;
while ($address =~ s/^($pattern|[^都道府県市区郡町村]+[都道府県市区郡町村])//o) {
warn $1;
}
... のようにすると、住所の先頭から都道府県、市区町村を抜き出せます。
ただし、
- 現行の市区町村のみのリストなので、統廃合前の地名や架空の地名は正しく扱えないかもしれません
- 市区町村内の町や区は正しく扱えないかもしれません