プロが教えるわが家の防犯対策術!

先頭の全角スペースを全部削除する場合の記述を教えてください。
$val="全角スペース全角スペース全角スペースあいうえお"

これだと先頭1文字しか削除できない。
$val =~ s/^ *//g;
※スペースは全角スペース

結果$valの中身
”あいうえお"

※Perlのバージョンが5.0のため「use utf8」 が使えないため 変換は「jcode.pl」を使っています。

質問者からの補足コメント

  • 調べて見てうまくいかなかったので質問させていただきました。

    $val =~ s/^ *//g;
    $val =~ s/^ +//g;
    スペースが2個以上連続する場合、上の指定(*や+でマッチするハズ?)なのですがうまくいきません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/03/31 12:08
  • $val =~ s/^ *//g;
    $val =~ s/^ +//g;
    これだとスペース1つしか削除できない。

      補足日時:2016/03/31 12:10

A 回答 (3件)

全角空白は 1 バイトではありません



JIS X 0201 での定義: 1面1区1点
iso2022jp でエンコード: 21 21
shift_jis でエンコード: 81 3f
euc-jp でエンコード: a1 a0

Unicode での定義: U+3000 IDEOGRAPHIC SPACE
utf-8 でエンコード: e3 80 80

というわけで、古い perl は1文字=1バイトの前提でしょうから
誤: s/^空+//g
正: s/^(空)+//g

shift_jis の場合は、更に一手間かける必要があります。
    • good
    • 0
この回答へのお礼

>正: s/^(空)+//g
こちらで出来ました。
()を付ければ良かったのですね。
ありがとうございました。

お礼日時:2016/03/31 12:14

その時代だと jperl があったりして.

    • good
    • 0

「perl 行頭 空白 削除」といったキーワードで検索すると解説ページがたくさんみつかります。


同じことを考えている人は大勢います。

参考まで。
この回答への補足あり
    • good
    • 0

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