Perlで全角文字パターンの削除
[上に]
[前に]
[次に]
Anemone-fish
1999/10/18(月) 11:43:56
Perlで、全角文字パターン、例えば、
s/[■□▲△●○]*//;
っていうのを処理したいのですが、何か方法があるでしょうか?
テストした限りでは、
s/■//g;
s/●//g;
など、全角1文字は通るようなんですが。
jperlが入ってない環境です。
たこすけ
1999/10/18(月) 15:51:10
#Perlはあまり自信が無いのですが・・・
jcode.plのjcode::trを使うというのはどうでしょう?
#-------------------------------
require 'jcode.pl';
$hoge = "ばいあぐら"; #対象
$from = 'あいうえお'; #パターン
$to = ''; #置き換える文字列
jcode::tr(\$hoge,$from,$to,'d');
print $hoge;
#-------------------------------
↑を実行してみた結果は「ばぐら」が出力されました。
Anemone-fish
1999/10/18(月) 17:47:20
たこすけさん、早速ありがとうございます。
で、上の例だと
$hoge = "ばいあぐら";
の場合はそのまま
ばいあぐら
と表示してほしいんです。(#パターン 外文字が入っているんで)
$hoge = "あえいうえおあお";
なら
NULLになってほしいんです。
たこすけ
1999/10/18(月) 18:46:37
ありゃりゃ勘違い。失礼しました。
↓応急処置です。
#---------------------------------------------------------
require 'jcode.pl';
$hoge = "ばいあぐら";
$fuga = $hoge; # $hoge のコピーを作っておく
$from = 'あいうえお';
$to = '';
jcode::tr(\$hoge,$from,$to,'d');
$hoge = $fuga if($hoge ne ""); #$hoge が空でないなら元に戻す
print $hoge;
#---------------------------------------------------------
ん〜、他にもっと良い方法あるんだろうな・・・多分。
B-Cus
1999/10/18(月) 19:09:27
s/(■|□|▲|△|●|○)*//;
とか。対象が1文字とかだと、ミスるかもね。置換対象が3文字以上だと
わかっているなら
s/(■|□|▲|△|●|○){3,}//;
としておくのがよし。
B-Cus
1999/10/18(月) 19:15:12
あ、
s/^(■|□|▲|△|●|○)*$//;
か。
たこすけ
1999/10/18(月) 19:45:15
> s/^(■|□|▲|△|●|○)*$//;
自分が如何にアホかを思い知りました。
ゴミな書き込みをしてゴメンナサイ。
Anemone-fish
1999/10/19(火) 10:24:45
> s/^(■|□|▲|△|●|○)*$//;
って書けば分かりやすかったか..... REもPerlといっしょで動けば正解ですね
で、
> s/(■|□|▲|△|●|○){3,}//;
って近いことができそうだったんで、やってみるとエラー
半角でやってもエラー (nested *?+ in regexp...)
ひょっとして、{ }はPerlはサポートしてないか
ありゃ、GNUのsedもエラーにはならないけど、一致しないぞー(win32版) ... 泥沼状態
{ }ってどう書けばいいんでしょ〜
(っていつのまにか、問題が違ってる!)
B-Cus
1999/10/19(火) 13:38:53
- perlのバージョン
- 実際にはどのように書いたのか
- 文字コードは
ってなところでしょう。
Anemone-fish
1999/10/19(火) 18:21:06
ごめんなさい!
s/(■|□|▲|△|●|○)*{3,}//;
って書いてました。(^^;;;;;
頭がごちゃごちゃしているときは、エラーみても理解できなかった。
で、
> s/(■|□|▲|△|●|○){3,}//;
で、うまく処理できそうなのでこれを使わせてもらいます。
B-Cus さん、たこすけ さん、ありがとうございました。
Anemone-fish
1999/10/19(火) 18:21:11
[[解決]]
ごめんなさい!
s/(■|□|▲|△|●|○)*{3,}//;
って書いてました。(^^;;;;;
頭がごちゃごちゃしているときは、エラーみても理解できなかった。
で、
> s/(■|□|▲|△|●|○){3,}//;
で、うまく処理できそうなのでこれを使わせてもらいます。
B-Cus さん、たこすけ さん、ありがとうございました。
[上に]
[前に]
[次に]