作者: 藤岡和夫
日時: 2008/8/17(13:57)
On Sun, 17 Aug 2008 12:35:09 +0900
Bunta <hi9t-ooy@...-net.or.jp> さんwrote:

>  (1)sed のアドレッシング内で「/」のエスケープの仕方。 「\/」ではマッ
> チし「[/]」 ではマッチしないのか。 (serow's sed では両方とおり、Onigsed
> では両方ともとおらない=ミス・オペの可能性が強い…。)

 jperlではエラーになりますが、ognisedではエラーになりませんね。文字クラ
ス内のエスケープについては明確に書かれたものはないので、うまく動かない場
合はエスケープしてみる必要があります。この場合、文字クラス表現をエスケー
プに使う必要はないので、\/としてエスケープすべきでしょう。

>  (2)ERE の一回以上の反復を表わす「+」。Onigsed -R とパール5な正規表
> 現では、「\+」とエスケープする必要はない。serow's sed では、日本語版の独
> 自拡張でした。+ を理解する sed ということ。

 \+とエスケープしてしまうと「+」の文字そのものににマッチするようになり
ます。[0-9]+はセットで意味を持つので、[0-9]\+と書くと、[0-9]の一文字と
「+」一文字の文字の並びににマッチすることを指定することになります。+は量
指定子の一種ですから、*と同類です。マニュアル等の正規表現の箇所をよく読
まれないと・・・

C:\Scripts>bin\onigsed -R -f test.sed object
v.c./vz 43番, 文太

のように、-nオプションを除くとコマンドラインに出力されました。

  -n, --quiet, --silent
                 suppress automatic printing of pattern space

ですね。

藤岡 和夫
kazuf@...
日曜プログラマのひとりごと http://homepage1.nifty.com/kazuf/renewal.html