解決済みの質問
perlでは
s/\s*$//
というコマンドがあり、これを $a=~s/\s*$//; みたいな使い方を
する事により、変数$aの後ろにある空白と改行コードを削除すると聞いてます。
しかし、このコマンドの何が空白を削除し、何が改行を削除しているような
詳しい部分は間ではしりません。
もし、このコマンドについてご存知の方がいらっしゃいましたら、
詳しく解説していただけないでしょうか?
投稿日時 - 2001-08-18 00:15:00
s 置換コマンド(substitute)で、デリミッタで区切られた(正規表現の)文字列を、次に区切られた文字列で置換する
/ デリミッタ(区切り文字)
\ エスケープ文字
\s スペース、タブ、改行のいずれか1文字を意味する
* 正規表現(regular expression)で、直前のパターンの0回以上の繰り返し
$ 文字列の末尾を表す
--つまり----------------------------------------
\s* で、空白や改行の繰り返し(_あ___いう__ の、_ 部分)
\s*$ で、行末の複数の空白と改行
s/AAA/BBB/ で、AAA(正規表現) を BBB に置換する
s/\s*$// で、\s*$ を、// の中の文字列、つまり「無」に置換する
投稿日時 - 2001-08-18 01:32:13
お礼
早速のアドバイスありがとうございます。
各記号と詳しい説明までして頂きありがとうございます。
また何かありましたら宜しくお願い致します。
投稿日時 - 2001-08-18 01:56:30
0人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(1件中 1~1件目)
私はPerlは詳しくないですが、これは正規表現ではないでしょうか。
正規表現は直接Perlには関係ありません。
sedやawkなどのUNIXコマンドでも多用されます。
\sはスペース、*は直前文字の0回以上の繰り返し(ここではスペース)、
$は行末を示します。sコマンドはs/a/b/という風に使って、
文字列aをbに変換するという意味ですから、
全体では「行末にあるスペースの0回以上の繰り返しを削除する」
という意味になります。
投稿日時 - 2001-08-18 01:23:33
お礼
早速のアドバイスありがとうございます。
これはUNIX上でのコマンドであったわけですね。
どおりでPerlの事を調べても見つからないわけです。
詳しいところまで解説していただきありがとうございました。
投稿日時 - 2001-08-18 01:54:21
OKWaveのオススメ
おすすめリンク