« Femoでタイトル順ソートをサポート | メイン | Femoで全角スペースでのタグの切り分けをサポートしました。 »

use utf8なら\sは全角スペースもmatchする

Femoで全角スペースでもTagのsplitができるように、と調べているのですが、

use utf8;

をしている場合、\sは全角スペースにもmatchするようです。初めて気がついた。

#!/usr/bin/perl
use strict;
use warnings;
use utf8;
binmode STDOUT => ":utf8";
my $str ="全角 ス ペ ー ス が入った テキ\tス\nト";
print join ",",split /\s/,$str;

の出力は

全角,ス,ペ,ー,ス,が入った,テキ,ス,ト

となります。


perlretut - Perl の正規表現のチュートリアルによると、これも知らなかったのですが、

\sは空白キャラクタで [\ \t\r\n\f]を表します

なのですね。

utf8の場合は、ここに書かれているutf8のGeneral Category Valuesで表現すると

\s = [\p{Zs}\t\r\n\f]

なのかなぁ、、、難しいなぁ。

コメント

ホントですね!
いけるんですねー、これ。
なるほど、情報有難うございます!!

今までずっくjcode.plで引っ張ってきてたので、どうしても5.8.7の環境で記述しなくなって、時間もなくってオタオタしています。^^;

5.8.xは便利なんですけど、今までの資産と相容れないのでライブラリが死蔵されそうで、ちょっと怖いです。ただいま必死に移行中です。L(・o・)」

お邪魔しました~(〃▽〃)

コメントを投稿