小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

PerlでTrimする!

VB系では、文字列の両端にあるスペースを削除するに有名なTrimがあります。
しかし、Perlでは、残念ながらTrimはありませんが、以下の正規表現で一発です。

$string =~ s/^\s*(.*?)\s*$/$1/;

ちょっと解説です。

  • まずは、\sは、文字クラス[ \t\n\r\f](左端にスペース含む)と同義です。
  • 始めに、文字列の先頭から\sの0回の連続にマッチさせる。
  • つぎに、任意1文字の0回の連続に最小マッチさせて、これを$1に記憶する。
  • そして、\sの0回の連続を後尾までマッチさせる。
  • 最後に、文字列全体を$1で置換する。

以下のように、2回に分ければ、両端でも片方のみでも大丈夫です。

$string =~ s/^\s+//;
$string =~ s/\s+$//;

追記:

上記は、半角系のスペース文字に対するTrimです。全角系のスペースを考慮に入れると以下が参考になります。