« 船に刻む | Main | テキストの入れ替え »

2015.01.23

カンマの後の改行 前方不一致

英文テキストにカンマが入っている。そのカンマの後で改行したい。そのときには検索と置換を使うことになる。カンマを検索して、カンマの後に改行マークを入れたもので置換をすればいい。但しいくつか考慮すべき点がある。

まず、数字の間に入っているカンマの後では区切らないようにしたい。また、改行位置はカンマの直後ではなくカンマの後の空白の後にしたい。

以上の条件で秀丸を使った改行の方法を考えてみると色々な解法がある。

(1)カンマの前に注目すると、数字でない文字とカンマの組合せと考えられる。数字以外は[^0-9]{1,}という正規表現となる。但し秀丸はそのままでは最長一致で検索するので、?を付加して最短一致の検索に変える必要がある。次のコマンドで数字でない文字とカンマの組合せを検索し、それに改行マークを付加したもので置換が行われる。
replaceallfast "([^0-9]{1,}?), " , "\\1, \\n" , regular, nocasesense, inselect, nohilight;

(2)秀丸には前方一致、前方不一致、後方一致、後方不一致という便利な機能がある。そのうちの前方不一致を使えば、前が数字以外のカンマだけを検索するので最短一致を考える必要がなくなる。知っておいて損はない。
replaceallfast "(?<![0-9]), " , "\\1, \\n" , regular, nocasesense, inselect, nohilight;

(3)発想を変えカンマの後に注目することもできる。実はカンマと空白の組合せを探せば普通は十分である。
replaceallfast ", " , ", \\n" , regular, nocasesense, inselect, nohilight;

しかしこれで動かないようなテキストがあるので、上の2つの解法も紹介したのである。同じことを実現するにしても、色々な方法がある。

なお、うまく動かないとき暫くそのままにしておくと、あるときふと別の解法が思い浮かぶことがある。科学史に色々な例が出てくる発見と同じ。

|

« 船に刻む | Main | テキストの入れ替え »

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/20048/61018350

Listed below are links to weblogs that reference カンマの後の改行 前方不一致:

« 船に刻む | Main | テキストの入れ替え »