On Sat, 30 Aug 2008 18:37:46 +0900
藤岡和夫 <kazuf@...> wrote:
> 結論として、onigsedでは、次のようにすれば意図どおり動作するようになり
> ます。当たり前といえば当たり前なのですが・・・
>
> ^-----
> # デリミタ"---"の前が改行でないなら改行挿入
> $!N
> /^[a-z][a-z]*\n---$/{
> s/\n/\
> \
> /
> P
> s/^[a-z][a-z]*\n//
> }
> P
> D
> -----$
>
> なぜこれを試したのかは「^aaa\n---$」がマッチして「^[^\n][^\n]*\n---$」
> がマッチしないからですね。
>
> もちろん、これでマッチしたからどうこう言っても仕方がないのですけどね。
>
> もう一つ試したのは、もっと広い範囲でマッチするように「^..*\n---$」です
> けど、これもマッチしませんでした。「.」は「[^\n]」の意味ですから当然かも
> しれませんね。
さらに色々試してみると、
$!N
/^..*\n---$/{
s/\n/\
\
/
P
s/^[a-z][a-z]*\n//
}
P
D
は動作します。最初のマッチは /^[^\n][^\n]*---$/でも動作します。
別に、「.」や「[^\n]」のマッチを試してみてもマッチしますね。
これ以上、追求しても現象論ではわからないですね。
藤岡 和夫
kazuf@...
日曜プログラマのひとりごと http://homepage1.nifty.com/kazuf/renewal.html