• ベストアンサー

s/\s*$// の意味

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

noname#149114
noname#149114
  • Perl
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • 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

  • 変数の値から改行コードを取り除くには

    改行コードを含んでいる変数 $a があったとして、そこから改行コードを取り除くために $a =~ s/\\n//g; としましたが、改行コードは取り除けませんでした。 対処法をご存じの方がおられましたらお教え下さい。

    • ベストアンサー
    • Perl
  • s/\$○○$・・・について

    簡単な質問かと思われますが、Perl初心者につき教えてください。 単純に s/\$○○$/$○○/g; s/<!--○○-->/$○○/g; の意味と使い方など教えていただけたらうれしいです。 宜しくお願いします。 ○○の部分は全て同じ文字列(変数名?)が入ります。

    • ベストアンサー
    • Perl
  • $1 と =~ の意味を教えて下さい

    perlで書かれたとある掲示板に機能追加すべくソースをいじってます。 意味のわからないコードがあるので、教えて下さい。 $skin =~ s/(name="s_word")/$1 value="$in{s_word}" とか、 $hogehoge = $1; のような感じで出てくる、$1ってどういう変数なのでしょうか? どういったときに用いられるのでしょう? また、=~ というのは、どういう意味なのでしょうか? どなたか、ご教授下さいませ。 よろしくお願い致します。

    • ベストアンサー
    • Perl
  • sedコマンドで改行コードを削除してテキストを一列にする 方法

    今、宿題が出ているのですが、 ネットで探しても基本的な部分以外を把握できなくて困っています。 sedコマンドで改行コードを削除してテキストを一列にするコマンド、お分かりのかたいたら尾根がします。 sed 's/\n//g' test.txt このコマンドでよいかと思ったのですがちっともうまくいきません。 何がおかしいのか、 どのコマンドが正しいのか、ご教授いただけないでしょうか。

  • 改行文字を消す方法を教えて頂けませんか。

    こんにちは。 C言語で、改行まで文字列として格納した変数から、改行のみを削除する事は可能でしょうか。構想としては、 char *str = "text改行" ↓ 改行部分を削除 ↓ str == "text" になるのがベストです。 良い方法をご存知であれば教えて頂けないでしょうか。どうぞよろしくお願いします。

  • VBAで変数に改行を格納した場合

    セルA1に あああ いいい と入れて、 VBAで Dim str As String str = Range("a1") と言うコードを記述して、ステップモードでstrにカーソルを充てると あああいいい と、変数が格納されるのですが、 変数の値は改行されては表示されないのですか? うぃっちウインドウで監視すると、若干空白があるように感じます。 でも私はよくF8で変数にカーソルを充てて今の値を見るのですが 変数に改行があるかどうかは、この方法ではわからないということですか?

  • ディレクトリの削除について

    perlにてディレクトリの作成を行ったのですが、間違えて最後の改行コードを抜き忘れてしまい"aaa\r\nbbb\r\n"というようなディレクトリ名のディレクトリができてしまいました。 このディレクトリを削除したく、以下の事を試したのですがいずれもうまくいきませんでした。 ・FTPツールから削除 ・コマンドプロンプトからrmdir ・perlにてrmdir("aaa\r\nbbb\r\n")実行 このディレクトリを削除することは出来ないのでしょうか。 宜しくお願いします。

    • ベストアンサー
    • Perl
  • nkf -wのオプションの意味は何なのでしょうか?

    nkf -wのオプションの意味は何なのでしょうか? -Lw(Windowsの改行コードに変換する)なら見つかりましたが・・・ あとnkfでハマル(注意すべき)点など、経験者の方教えてください。 nkfコマンドを使わずにnkfでできること全てをperlで行うことは可能でしょうか?

  • perlでの改行コードの置換

    perlで改行コードを置換したいのですが・・・ もとのファイルはS-JISコードでその中身をEUC(UNIXで使用するために)に変換します。ここまではOKなのですが、改行コードがうまく行きません。 改行コードをUNIXで使うためにLFだけにしようと思い、 $line =~ s/\r\n/\n/g; (これは\r\nで引っかからない) とか $line =~ s/\n/\x0A/g; とかにしてみたのですがうまく行きません。 どのようにすればよろしいでしょうか?

    • ベストアンサー
    • Perl
  • 変数のデータに改行コードのみを削除したい

    変数のデータに改行コードのみを削除したい 変数のデータに改行コードのみを削除したいと思っておりますがうまくできません。 $samのデータに以下の内容でデータがはいってます。 (ここから) これはテストです。<br>\n <br>\n これはテストです。<br>\n <br>\n <br>\n これはテストです。<br>\n これはテストです。<br>\n (ここまで) $sam=~ s/<br>\n//g; だと本来改行コードがほしい内容まで削除してしまいます。 以下の内容もおかしいと思いますが、うまく出来ませんでした。 $sam=~ s/.*?<br>\n//g; この内容の場合改行コードが欲しい。それ以外は削除したい。 タグの除去は以下のサイトを検索で見つけたのですが、ちょっと違うかなと思い質問させていただきました。 HTMLタグを取り除く http://www.nishishi.com/perltips/string4.html 以上、よろしくご指導賜りたく思います。

    • ベストアンサー
    • Perl

専門家に質問してみよう