作者: WATANABE Hirofumi
日時: 2003/1/18(03:08)
わたなべです。

Penelotty <YIX06325@...> writes:

> 例えば下記のような,命令があるとします,
> 
> $lovelove=~s/前田愛|愛|前田亜季|亜季|中田あすみ|あすみ|村田ちひろ|ちひろ|村上東奈|東奈(ちゃん)?/<font color=#ff0000>$1<\/font>/g;
> 
> このとき“?”へのHITが0回の時は,実質的に“1)”のような挙動をおこさせる,
> 1回の時は“2)”のように実行させたいのです.
> 
> 1).$lovelove=~s/前田愛|愛|前田亜季|亜季|中田あすみ|あすみ|村田ちひろ|ちひろ|村上東奈|東奈(ちゃん)?/<font color=#ff0000>$1ちゃん<\/font>/g;
> 2).$lovelove=~s/前田愛|愛|前田亜季|亜季|中田あすみ|あすみ|村田ちひろ|ちひろ|村上東奈|東奈(ちゃん)?/<font color=#ff0000>$1<\/font>/g;
> 
> トリックでなく,正道なスクリプトとして可能でしょうか?

という回りくどい説明じゃ何をしたいのかいまいちよくわからないのですが、
要するに
  o 必ず「ちゃん」をつける
  o でも「ちゃんちゃん」になっては困る
ってことですか?

だったらこうとか(面倒なので途中省略)。
$lovelove = "愛愛ちゃん";
$lovelove =~ s/(前田愛|愛|前田亜季|亜季)(ちゃん)?/<font color=#ff0000>$1ちゃん<\/font>/g;

つまり「愛」も「愛ちゃん」も「愛ちゃん」に変換すればいいんです。
ちょっと無駄だけど。

-- 
わたなべひろふみ