アプリ版:「スタンプのみでお礼する」機能のリリースについて

Perlで英数字下記の条件で取り出したいのですがどのようにすればよいでしょうか?
ご返答いただけるととても助かります。
宜しくお願い致します。

条件
英数字と半角文字とスペースのみを取り出したい。(それ以外の文字は半角スペースに置き換えたい。)
また、連続するスペースは削除したい。

------------------
$str ='※第25回Ski Festival開催';
$str =~ ???????[0-9A-Za-z ]
print $str;
------------------
期待する結果
25 Ski Festival

A 回答 (2件)

 こうなります。



$str ='※第25回Ski Festival開催';
#$str =~ s/[\x81-\x9f\xe0-\xef]./ /g; #Shift-JIS の場合のみ
$str =~ s/[^0-9a-zA-Z ]/ /g;
$str =~ s/ {2,}/ /g;
print $str;

 1つめの正規表現は、全角文字を全てスペースに置き換えています。
 次の行では全角以外の英数外文字をスペースに置き換えています。
 最後に、連続するスペースを1つにまとめています。

 文中に漢字が混じっているため、もし使っている文字コードがシフトJISであれば、これを正確にスペースに置き換えるためには漢字だけ別に処理しなければいけません。
 コメントになっているところはそのための処理ですので、適時外してください。
 使っているコードがEUCであれば、漢字のテイルバイトが半角文字を含むことはありませんので、コメントを外す必要はありません。
    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。
ばっちりでした!

お礼日時:2006/09/29 11:08

$str =~ s/[^0-9A-Za-z ]/ /g;



とかでどうですか?
    • good
    • 0
この回答へのお礼

^を使うだけでこんな風にできるんですね。
知りませんでした。
ありがとうございました。

お礼日時:2006/09/29 11:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!