次のように、各行に郵便番号と住所があります。
パターンは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
としたいです。
なお、置換後の文字列には、都・道・府・県・市・区・郡・町・村」は入れたいです。
どのような正規表現にすればよいでしょうか?
以下のように指定していただければできます。
検索文字列:([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号」
のような住所だけ確認しました。
それ以外は確認していないので日本全土の住所が変換できるかはわかりません。
難しい内容だったので間違ってたらすいません。
なんかやりたいことがいまいち分からんけど、
s/^([A-Z]+?)-([A-Z]+?),(.+?(?:都|道|府|県)),(.+?)(群)?(.+?)(市|町|村)(.*)$/$1,$2,$3,$4$5$6$7,$8/g;
あたりか?
正規表現は環境によって使える機能が違うので言語かソフトは明確にしてもらわんと困るんだけど。
どこまでが検索文字列の表現でどこからが置換文字列の表現ですか?
以下でたぶん大丈夫だと思いますが・・・
検索文字列
^([0-9]{3})-([0-9]{4})(.*)(区|市|郡|町|村)(.*)$
置換文字列
$1,$2$3$4,$5
または
\1,\2\3\4,\5
出来なかった場合は、使用するソフト名などの環境をお願いします。
ソフト名はEmEditorか秀丸エディタです。
こちらはEmEditorフリー版で確認して大丈夫でしたが・・・
出来ませんでしたか?
「東京都町田市本町田」のような住所は例外として、区市などと同じように()内に別途追加すれば大丈夫です。
検索文字列
^([0-9]{3})-([0-9]{4})(.*)(区|市|郡|町|村|田)(.*)$
置換文字列
\1,\2\3\4,\5
これでどうですか。
s/^([0-9A-Z]{3})\-([0-9A-Z]{4}),(.+?)(()?(都|道|府|県)())?,((.+?)((郡)))?(.+)((区|市|町|村))/\1,\2,\3\5,\8\9\10\11/;
うーん、ごめんなさい、次の点でクリアしてないですね。
1. 「○○郡○○町村」に対応できない
2. 『市』の付く市名に対応できない