log.+?\.txt
log10-09-15.txt log100915.txt
94 :名無しさん@お腹いっぱい。:2009/04/12(日) 20:36:12 ID:uUJHCTROO
○山○男 北海道札幌市中央区歓楽街5-8 寒い
○沢○香 千葉県市川市工業地帯5-5 普通
○井○美 東京都杉並区高級住宅街5-5-4 普通
○江○郎 大阪府大阪浪速区商店街3-5 普通
○島○恵 岡山県倉敷市美観地3-5-2 暖かい
○木○介 沖縄県沖縄市保養地4-6 暑い
↑のデータを↓のようにしたいと思います。
○山○男 北海道札幌市中央区 寒い
○沢○香 千葉県市 普通
○井○美 東京都杉並区 普通
○江○郎 大阪府大阪市浪速区 普通
○島○恵 岡山県倉敷市 暖かい
○木○介 沖縄県沖縄市 暑い
2番目の項目である住所欄の最初に出てくる「市」「郡」より後ろを切り取りた
いと思います
ただし、住所欄に「区」が含まれる「市」は、最初の「区」より後を切り捨てま
す。
これを秀丸で実現するにはどのようにしたらよいですか?
・上記の空白はタブです
・市川市や郡山市などの例外は考えないものとします
・やり方はこだわっておらず、正規表現でもマクロでもかまいません
・WinXP 秀丸のバージョンは6.14を使っております
96 :名無しさん@お腹いっぱい。:2009/04/12(日) 21:41:58 ID:I08O25VAP
正規表現による置換
検索:\t(.+)(区|市|郡)([^区市郡]+\t)
置換:\t\1\2\t
97 :名無しさん@お腹いっぱい。:2009/04/12(日) 22:10:12 ID:PThKQFb30
それって「区・市・郡のうち最後に登場する文字」までを残す置換であって
94の要望とは違うんじゃね?
> ○沢○香 千葉県市川市工業地帯5-5 普通
↓
> ○沢○香 千葉県市 普通
という置換結果例と
> ・市川市や郡山市などの例外は考えないものとします
という注釈を併せ読むと、「残し過ぎよりは削り過ぎを優先」という方針のように読めるのだが。
○山○男 北海道札幌市中央区市川町0-0 寒い
に適用すると
○山○男 北海道札幌市中央区市 寒い
になってしまうが(>>94は「北海道札幌市中央区」となるよう期待しているのでは)。
98 :名無しさん@お腹いっぱい。:2009/04/12(日) 22:33:50 ID:PThKQFb30
検索:\t(.*?郡|.*?市.*?区|.*?市|.*?区).*\t
置換:\t\1\t
どんな例外的な市名・郡名等が存在して想定外の置換を引き起こすか、は知らない。
99 :名無しさん@お腹いっぱい。:2009/04/12(日) 22:37:34 ID:ifyaAgf/0
gofileend; insert "\n区"; gofiletop; ##result = true;
while( ##result == true ){
searchdown "\\t" , regular, nocasesense;
right;
##search_x = x; ##search_y = y;
searchdown "区" , noregular, nocasesense;
if( ! result ){ ##result = eof; break; }
if(##search_y != y){
moveto ##search_x,##search_y;
searchdown "(市|郡)" , regular, nocasesense;
}
right; beginsel; right;
searchdown "\\t" , regular, nocasesense;
delete; golinetop; down;
##result = result;
}
if(##result == eof){ gofileend; deleteline; backspace; }
>>94
一応、要望通りのマクロになったとは思うけどエラーチェックとか細かい要望とかは自分でやってくれ
100 :名無しさん@お腹いっぱい。:2009/04/12(日) 23:13:11 ID:p/vLE8b+0
行の後から市郡区あたりを検索して、タブまでを削除する、
という操作をキーの記録と再生で、目視で確認しながら消すのが確実かつ早そうだけどなあ。