javaでの住所の都道府県分割について

住所を保存しているデータについて、
都道府県と、それ以外の部分とで分割する機能を作成。
最初はオシャレに行きたい精神が強く、

Pattern jyusyo;
jyusyo = Pattern.compile("^(.{2}[都道府県]|.{3}県)");
Matcher matcher = null;
matcher = jyusyo.matcher(value);
if (matcher.find()){
     prefecture = matcher.group();
}

としていたが、先頭に都道府県が来ず、
かつ千葉県にある四街道市とか来た場合に誤った動きをするので、
47都道府県を愚直にパターンマッチするように修正。

Pattern jyusyo;
jyusyo = Pattern.compile("^(北海道|青森県|以下47都道府県分続く。。)");
Matcher matcher = null;
matcher = jyusyo.matcher(value);

if (matcher.find()){
	 prefecture = matcher.group();
}

先頭から判定させているのは、東京都府中市という間に「京都府」がある住所があるため。
一応これでうまくいっている模様