バックスラッシュ記法を有効にさせずに特殊文字を表示させる
escape(string) -> String
quote(string) -> String
概要
string の中で
正規表現において特別な意味を持つ文字の直前にエスケープ文字(バックスラッシュ)を挿入した文字列を返します
。
パラメータ
[PARAM] string:
正規表現において特別な意味をもつ文字をもつ文字列を指定します。
irb(main):009> rp = Regexp.escape("$bc^")
irb(main):010> p rp
"\\$bc\\^"
=> "\\$bc\\^"
irb(main):013> rp = Regexp.new("$bc^")
=> /$bc^/
irb(main):086> p = Regexp.escape("bc^")
=> "bc\\^"
irb(main):087> p = Regexp.escape("$bc^")
=> "\\$bc\\^"
irb(main):088> p = Regexp.escape("bc^")
=> "bc\\^"
irb(main):089> p = Regexp.escape("bc")
=> "bc"
\を追加してエスケープしないようにしている
irb(main):094> puts "faafa\nfaaf"
faafa
faaf
=> nil
irb(main):095> p "faafa\nfaaf"
"faafa\nfaaf"
=> "faafa\nfaaf"
irb(main):096> a = Regexp.escape("faafa\nfaaf")
=> "faafa\\nfaaf"
irb(main):097> p a
"faafa\\nfaaf"
=> "faafa\\nfaaf"
irb(main):098> puts a
faafa\nfaaf
=> nil
シングルクォートだとバックスラッシュ記法と式展開が有効にならない
文字列はダブルクォートまたはシングルクォートで囲まれています。
ダブルクォートで囲まれた文字列ではバックスラッシュ記法と式展開(後述)が有効
になります。シングルクォートで囲まれた文字列では、\\ (バックスラッシュそのもの)と \' (シングルクォート) を除いて文字列の中身の解釈は行われません
。シングルクォートで囲まれた文字列では行末の \ は \ そのものとして解釈
されます。
複数行にわたって書くこともできます。この場合含まれる改行文字は常に\nになります。実際のソースファイルの改行コードとは無関係です。
空白を間に挟んだ文字列リテラルは、コンパイル時に1つの文字列リテラルと見倣されます。
\\ (バックスラッシュそのもの)と \' (シングルクォート) を除いて文字列の中身の解釈は行われません
irb(main):101> puts 'faafa\nfaaf'
faafa\nfaaf
=> nil
irb(main):102> puts "faafa\nfaaf"
faafa
faaf
=> nil
irb(main):103> puts '\\'
\
=> nil
irb(main):104> puts '\''
'
=> nil
感想
エスケープするとは特殊文字を有効にしない