作者: 藤岡和夫
日時: 2008/8/30(20:04)
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