人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【正規表現について/難問/正答の方に満点】正規表現でお知恵をお貸し下さい。難しいです。
次のように、各行に郵便番号と住所があります。
パターンは3つあります。

XXX-YYYY,東京都,BBBBBBBB(区)CCCC
XXX-YYYY,AAAA(道or府or県),BBBBBBBB(市)CCCC
XXX-YYYY,AAAA(道or府or県),BBBB(郡)BBBB(町or村)CCCC

これを、一括して、
XXX,YYYY,AAAA,BBBBBBBB,CCCC
としたいです。

なお、置換後の文字列には、都・道・府・県・市・区・郡・町・村」は入れたいです。

どのような正規表現にすればよいでしょうか?

●質問者: crashtruck5
●カテゴリ:コンピュータ 学習・教育
✍キーワード:パターン 文字列 東京都 正規表現 郵便番号
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● takerudayo
●20ポイント

以下のように指定していただければできます。

検索文字列:([1-9]{3})(-)([1-9]{4})(,)(.+[都道府県])(,)(.+[区市町村])(.+)

置換文字列:\1,\3,\5,\7,\8


解説

検索文字列で指定した()表記にそれぞれ1とか2という番号が自動で付きます。

これに対して置換文字列で読み込んだ文字列を置換文字列で並べています。

例えば置換文字列に「\1\1」と書くと、「XXXXXX」という結果になります。

例えば置換文字列に「\2\1」と書くと、「YYYYXXX」という結果になります。

今回は並び替えにさらに「,」を付加するとのことでしたので、置換文字列内に「,」が書いてあります。


質問に書かれていたパターンと、

「A県B市C区D町E番地F号」

「A府B市C区D町E番地F号」

のような住所だけ確認しました。

それ以外は確認していないので日本全土の住所が変換できるかはわかりません。


難しい内容だったので間違ってたらすいません。

◎質問者からの返答

うーん、ごめんなさい、次の点でクリアしてないですね。

1. 「○○郡○○町村」に対応できない

2. 『市』の付く市名に対応できない


2 ● b-wind
●20ポイント

なんかやりたいことがいまいち分からんけど、

s/^([A-Z]+?)-([A-Z]+?),(.+?(?:都|道|府|県)),(.+?)(群)?(.+?)(市|町|村)(.*)$/$1,$2,$3,$4$5$6$7,$8/g;

あたりか?

正規表現は環境によって使える機能が違うので言語かソフトは明確にしてもらわんと困るんだけど。

◎質問者からの返答

どこまでが検索文字列の表現でどこからが置換文字列の表現ですか?


3 ● rouge_2008
●20ポイント

以下でたぶん大丈夫だと思いますが・・・

検索文字列

^([0-9]{3})-([0-9]{4})(.*)(区|市|郡|町|村)(.*)$

置換文字列

$1,$2$3$4,$5

または

\1,\2\3\4,\5


出来なかった場合は、使用するソフト名などの環境をお願いします。

◎質問者からの返答

ソフト名はEmEditorか秀丸エディタです。


4 ● rouge_2008
●20ポイント

こちらはEmEditorフリー版で確認して大丈夫でしたが・・・

出来ませんでしたか?

「東京都町田市本町田」のような住所は例外として、区市などと同じように()内に別途追加すれば大丈夫です。


検索文字列

^([0-9]{3})-([0-9]{4})(.*)(区|市|郡|町|村|田)(.*)$

置換文字列

\1,\2\3\4,\5


5 ● motokun44
●20ポイント

これでどうですか。

s/^([0-9A-Z]{3})\-([0-9A-Z]{4}),(.+?)(()?(都|道|府|県)())?,((.+?)((郡)))?(.+)((区|市|町|村))/\1,\2,\3\5,\8\9\10\11/;

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ