• ベストアンサー

s/\$○○$・・・について

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

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

  • ベストアンサー
  • Dpop
  • ベストアンサー率51% (279/544)
回答No.1

$変数名 =~ s/なんとか/かんとか/; は、$変数名の中にある「なんとか」で示される正規表現を探して、「かんとか」に置き換えてね。と言う意味があります。最後についている g はグローバルと言う意味意味で、「なんとん」が複数回あった場合には、全て変換対象にしてね。と言う意味です。 正規表現には、いろいろな意味を持った文字。メタ文字があります。 $ もメタ文字で、「文章の最後」と言う意味があり、例えば $test =~ s/do$/done/; であれば、$text の最後が do であったら、done に置き換えてね。と言っています。 「なんとか」の中で、メタ文字と同じ文字がでてくると正規表現が正しく動作しません。そう言う時には「 エスケープ文字」を利用して、メタ文字を普通の文字と同じように扱ってね! と、正規表現エンジンに伝えます。そのメタ文字が \ です。 ですので、\$ は、正規表現としての $ ではなくて、普通の文字としての $ を示しています。 なので、 s/\$○○$/$○○/g; $ を文字として扱い(\$)、○○は、変数の一番最後にでてくる場合には、$○○ と置き換えてね。と言うことになりますね。 ここで、気づいたでしょうか? g 指定が意味を持っていないことを。意味が分からなければ、僕の説明を良く読んでください。答えが書いてありますから。(間接的にですが。) 正規表現についての説明は Google などで「Perl 正規表現」を検索してください。くれぐれも「正規表現」だけで検索しないで下さいね。別の言語の正規表現もヒットしてしまうので、紛らわしいです。(要するに、言語によって、正規表現の文法に違いがある場合があるよ。と言う意味です。)

関連するQ&A

専門家に質問してみよう