作者: Bunta
日時: 2006/10/23(18:17)
藤岡さん

>>  ※注、プロンプトは今のところフィクションです。

 これは気にしないでください。
 パスも通りましたし。フィクションでなくなりました。

> やはり、(?=...)や(?!...)の...の部分がSJISだと動かないようですね。鈴木
>さんの書かれている通りですね。

 間違っているかもしれませんし、すでに解決済みかもしれませんが。
 鈴木さんが書かれているのは、look-behind、つまり '(?<=...)' と '(?<!...)'
のことなんですよね(青ラクダ、今日、注文。なので確かめようがないのですが)。
で、これは実験が思いつかないので、素直に Bruce. さんの「2バイト文字で戻
れないのには理由がある」をそのまま拝聴してしまうことにしてしまったのです
が、以下は実験できました。look-aheadの肯定・否定です。


Jperl -pe "s/ユーザ(?!ー)/ユーザー/;" test.txt
ユーザ                  #input (test.txt)
ユーザー                #input (test.txt)

ユーザー                #output
ユーザー                #output

Jperl -pe "s/ユーザ(?=ー)/ユザ/;" test.txt    ■
ユーザー                #input (test.txt)
ユーザ                  #input (test.txt)

ユザー                  #output
ユーザ                  #output

 「クラスの否定で一文字喰われてしまうのが悔しい」だけだったので、■の例
は強引な例になってますが。


>C:\Scripts\Perl\jperl>jperl -pe "s/ユーザ([^ー])/ユーザー$1/;" test.txt

 なので、これは1文字喰われて、「ユーザ」(改行)ではうまくいかないと思
うのですが。何か間違ってますかねぇ…。


 やっぱり『実践実用』、職場にありました。カメレオンに見覚えあったんです
よね。いい本じゃないですか!(まだちゃんと見られていないのですが。でも、
IEでなくFireFoxなもので、お気に入りが違う…。またしても文字コードの悩み)。
でも、勉強させていただきます。m(__)m そして赤ラクダも発見。青がいなくて
驚いた。perlに色目を使っていたのは、そんな昔だったのか?

文太