私はRuby 2.4を使用しています。私は正規表現で特別な意味を持つ文字を含むいくつかの文字列を持っています。したがって、これらの文字が正規表現文字として解釈される可能性を排除するために、私は "Regexp.escape"を使用してそれらをエスケープしようとします。しかし、私はまだどのように適切に、私は正規表現として解釈したいですかwhcih「\ S +」という表現は、とのスペースを代入する前に文字をエスケープすることができRuby式でRegExp.escapeが動作しないのはなぜですか?
2.4.0 :005 > tokens = ["a", "b?", "c"]
=> ["a", "b?", "c"]
2.4.0 :006 > line = "1\ta\tb?\tc\t3"
=> "1\ta\tb?\tc\t3"
2.4.0 :009 > /#{Regexp.escape(tokens.join(" ")).gsub(" ", "\\s+")}/.match(line)
=> nil
...正規表現の仕事の下TEHを作ることができないように見えますキャラクター? >a\ b\?\ c
、次いでgsub
はa\\s+b\?\\s+c
その結果実行される - Regexp.escape(tokens.join(" ")).gsub(" ", "\\s+")
は、tokens.join(" ")
収率a b? c
を実行した場合