正規表現に詳しい方におたずねします。

[都道府県][市区町村]
を、
[都道府県],[市区町村]
のように置換したいと思います。

例えば、
東京都千代田区 → 東京都,千代田区
北海道札幌市 → 北海道,札幌市
沖縄県那覇市 → 沖縄県,那覇市
のようにです。

置換元と置換先の正規表現はどのようになるでしょうか。
使用するのは、EmEditorです。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/09/18 23:50:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答6件)

id:uehara_delta No.1

回答回数8ベストアンサー獲得回数0

ポイント19pt

EmEditorの正規表現はよく知りませんが、

(.+[都道府県])(.+) という正規表現にマッチさせて

\1,\2 に置換すればよいのではないでしょうか?

id:crashtruck5

これですと、例えば「甲府」の後にも半角コンマが入ってしまうのです。

2008/09/12 01:02:06
id:takepierrot No.2

回答回数52ベストアンサー獲得回数7

ポイント19pt

当方、サクラエディタ&秀丸エディタを使っていますが、正規表現の仕様にそこまで大きな違いはないと思い、回答致します。

▼検索文字列

([都道府県])

▼置換文字列

\1,

以上でどうでしょうか。

ダメだったときはctrl-Zで勘弁していただけると幸いです。

id:crashtruck5

これですと、例えば「甲府」の後にも半角コンマが入ってしまうのです。

2008/09/12 01:02:18
id:uehara_delta No.3

回答回数8ベストアンサー獲得回数0

ポイント18pt

(.+?[都道府県])(.+)ではどうでしょうか?

id:drenchien No.4

回答回数1ベストアンサー獲得回数0

ポイント18pt

愚直なようですが、次のようにするのが結局は一番いいように思います。

 

置換メニューにて

 

検索する文字列(I):

(北海道|青森県|岩手県|宮城県|秋田県|山形県|福島県|茨城県|栃木県|群馬県|埼玉県|千葉県|東京都|神奈川県|新潟県|富山県|石川県|福井県|山梨県|長野県|岐阜県|静岡県|愛知県|三重県|滋賀県|京都府|大阪府|兵庫県|奈良県|和歌山県|鳥取県|島根県|岡山県|広島県|山口県|徳島県|香川県|愛媛県|高知県|福岡県|佐賀県|長崎県|熊本県|大分県|宮崎県|鹿児島県|沖縄県)

 

置換後の文字列(P):

\1,

 

[✔]正規表現を使用する(X)

 

都 道 府 県 のいずれかの文字を含む市町村名は、この四文字いずれについても存在していますので、"[都道府県]"という正規表現だけで区切りを判断しようというアプローチは、例外をいくつか考えなければならないため、あまり筋がよいとは思えないからです。日本の現在の都道府県名に限るのであれば、たかだか47個ですから、結局は列挙したほうがはやいのではないかと考える次第です。

 

なお、上記の正規表現の、動作確認に使ったデータを添えておきます。(「現在使われている」「市名」に限ってみても、都道府県を名称に含むものがいくつかあるとおわかり頂けると思います)

 

北海道札幌市

北海道北広島市

栃木県宇都宮市

埼玉県さいたま市

千葉県四街道市

東京都府中市

神奈川県茅ヶ崎市

山梨県甲府市

山梨県都留市

愛知県大府市

岐阜県山県市

奈良県大和高田市

大阪府枚方市

京都府京都市

京都府長岡京市

広島県尾道市

山口県防府市

宮崎県都城市

宮崎県西都市

鹿児島県いちき串木野市

沖縄県那覇市

id:takepierrot No.5

回答回数52ベストアンサー獲得回数7

ポイント18pt

すいませんでした! たしかにおっしゃるとおりですね。というわけで代替案を考えてみました。

もし、都道府県名の前がタブで区切られているのであれば(「\t東京都新宿区」といったような形ですね)、

▼検索文字列

(?>=\t)(.{2,3}[都道府県])

とすると今度は「甲府市」のあとに「,」が入ることはないと思います。もし、タブではなくカンマ区切りでしたら(「,東京都新宿区」という形です)、「\t」は「,」に替えていただくとよいです。

都道府県名がエディタの行頭にくるのであれば、

▼検索文字列

^(.{2,3}[都道府県])

でいけるかと思います。

ちなみに置換文字列は、どちらも先ほどの回答と同じ「\1-」で大丈夫です。

どのような条件下で置換を行われるかがわかりませんので、勝手に特定の条件を想定して回答してしまいましたが、参考になりますでしょうか?

id:kuzan No.6

回答回数7ベストアンサー獲得回数1

ポイント18pt

甲府の後ろなどにコンマがはいらないように、まず、最初に出てきた[都道府県]という指定を考えます。

行頭から都道府県名が始まるファイルなのですね。


行頭から[都道府県]以外の文字列が来てその後ろに[都道府県]が来たら、その後ろにコンマをつける。


^([^都道府県]+[都道府県])

\1,

とまず考えます。


しかし、最初に出てきた[都道府県]という文字で問題になるのが、「京都府」です。

これを避けるために、

^([^都道府県]+[都道府県])([^府])

\1,\2

とでもして、「京都,府」を避けることは出来るでしょう。

(他にも方法がありますが、「○○県○都市」などの都の後ろにコンマをつけないためには、「後ろに府以外がくる都」という指定がよいかと思います。


しかし、次に「東京都府中市」も問題になります。それに、「京都府」の後ろにコンマをつける作業が残っています。

ですから、一度の置換ではなく、何度かに分けた置換というのが、間違いがなくて良いのではないかと思います。

四十七回置換する必要はないのですから、これでも省力になると思います。


そこで、私がするとすれば、

まず、

^([^道府県]+[道府県])

\1,

で、東京都以外を置換。これで「京都府」も「京都府,」になるので、東京都府中市とは区別が可能です。

次に、

^東京都

東京都,

で、東京都の後ろにコンマ。

もし、京都に東京都(ひがし京都)などという地名があっても大丈夫なように、一応、「行頭の」という指定をしておきます。

  • id:tezcello
    Emeditor を使っていないのでこちらへ。

    > 例えば「甲府」の後にも半角コンマが入ってしまう
    「も」とあるので、
    山梨県,甲府,市…
    という結果になるように感じますが、
    (.+[都道府県])(.+) の場合こうなるって事は、Emeditor ってデフォルトで最短マッチって事になってしまうので
    山梨県甲府,市…
    だと思うんですけど、合っていますか?
    もしもこの様な結果なら、
    各行で1回のみの置換という事ができるなら、
    (.+?[都道府県]) を ¥1, に

    1行に1住所であるなら
    (.+?[都道府県])(.+[改行文字]) を ¥1,¥2 に

    都道府県名で行が始まっているなら
    (^東京都|京都府|大阪府|北海道|.+?県)  を ¥1, に

    置き換えれば良いのではないでしょうか?

    何となく皆さん都道府県名に注目されていますが、問題文通りに
    [都道府県][市区町村] を、[都道府県],[市区町村] にするなら
    (.+?[都道府県])(.*?[市区町村]) を ¥1,¥2 に置き換えるのでも出来そうに思います。

    NGな住所が有るのかはわかりませんが...
    この置き換えなら、1行に1住所とかの制限はないです。

  • id:yoneyore
     これってもしかして○便局が開示されているファイルから作成されるのでしょうか・・・?ご苦労ご察しします。 m(_ _)m

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません