On Fri, 17 Jan 2003 16:36:39 +0900 (JST)
YIX06325@... (Penelotty) さんwrote:
> メタキャラクタ,“?”の値(?)によって,置換を制御したいのですが….
>
> 例えば下記のような,命令があるとします,
>
> $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;
>
> トリックでなく,正道なスクリプトとして可能でしょうか?
> ご教示のほど,よろしく願います.
?は0回または1回マッチするという意味ですから、どちらにもマッチするわけ
で、条件分岐するためのものではありません。
次のようなスクリプトを動かしてみては、
$lovelove = "前田愛ちゃんだよーん";
if($lovelove =~ s/(前田愛|愛|前田亜季|亜季|中田あすみ|あすみ|村田ちひろ|ちひろ|村上東奈|東奈)(?!ちゃん)/<font color=#ff0000>$1ちゃん<\/font>/g){
print $lovelove, "(1)\n";
}elsif($lovelove =~ s/(前田愛|愛|前田亜季|亜季|中田あすみ|あすみ|村田ちひろ|ちひろ|村上東奈|東奈)ちゃん)/<font color=#ff0000>$1<\/font>/g){
print $lovelove, "(2)\n";
}
藤岡 和夫
FGALTS@...
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/