• ベストアンサー

s/\s*$// の意味

perlでは   s/\s*$// というコマンドがあり、これを $a=~s/\s*$//; みたいな使い方を する事により、変数$aの後ろにある空白と改行コードを削除すると聞いてます。 しかし、このコマンドの何が空白を削除し、何が改行を削除しているような 詳しい部分は間ではしりません。 もし、このコマンドについてご存知の方がいらっしゃいましたら、 詳しく解説していただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Zz_zZ
  • ベストアンサー率44% (756/1695)
回答No.2

s  置換コマンド(substitute)で、デリミッタで区切られた(正規表現の)文字列を、次に区切られた文字列で置換する /  デリミッタ(区切り文字) \  エスケープ文字 \s  スペース、タブ、改行のいずれか1文字を意味する *  正規表現(regular expression)で、直前のパターンの0回以上の繰り返し $  文字列の末尾を表す --つまり---------------------------------------- \s*     で、空白や改行の繰り返し(_あ___いう__ の、_ 部分) \s*$    で、行末の複数の空白と改行 s/AAA/BBB/ で、AAA(正規表現) を BBB に置換する s/\s*$//  で、\s*$ を、// の中の文字列、つまり「無」に置換する

noname#149114
質問者

お礼

早速のアドバイスありがとうございます。 各記号と詳しい説明までして頂きありがとうございます。 また何かありましたら宜しくお願い致します。

その他の回答 (1)

  • prome
  • ベストアンサー率32% (64/196)
回答No.1

私はPerlは詳しくないですが、これは正規表現ではないでしょうか。 正規表現は直接Perlには関係ありません。 sedやawkなどのUNIXコマンドでも多用されます。 \sはスペース、*は直前文字の0回以上の繰り返し(ここではスペース)、 $は行末を示します。sコマンドはs/a/b/という風に使って、 文字列aをbに変換するという意味ですから、 全体では「行末にあるスペースの0回以上の繰り返しを削除する」 という意味になります。

noname#149114
質問者

お礼

早速のアドバイスありがとうございます。 これはUNIX上でのコマンドであったわけですね。 どおりでPerlの事を調べても見つからないわけです。 詳しいところまで解説していただきありがとうございました。

関連するQ&A