の反対語は何Regexp.escape
ですか?
> Regexp.escape('A & B')
=> "A\\ &\\ B"
> # do something, to get the next result: (something like Regexp.unescape(A\\ &\\ B))
=> "A & B"
元の値を取得するにはどうすればよいですか?
これを試して
>> r = Regexp.escape("A & B (and * c [ e] + )")
# => "A\\ &\\ B\\ \\(and\\ \\*\\ c\\ \\[\\ e\\]\\ \\+\\ \\)"
>> r.gsub("\\(","(").gsub("\\)",")").gsub("\\[","[").gsub("\\]","]").gsub("\\{","{").gsub("\\}","}").gsub("\\.",".").gsub("\\?","?").gsub("\\+","+").gsub("\\*","*").gsub("\\ "," ")
# => "A & B (and * c [ e] + )"
基本的に、これら(, ), [, ], {, }, ., ?, +, *
は正規表現のメタ文字です。また\
、エスケープ文字として使用されます。
呼び出しのチェーンはgsub()
、エスケープされたパターンを対応する実際の値に置き換えます。
これを乾かす方法があると確信しています。
更新:user2503775によって提案されたDRYバージョン
>> r.gsub("\\","")
更新:
以下は正規表現の特殊文字です
[,],{,},(,),|,-,*,.,\\,?,+,^,$,<space>,#,\t,\f,\v,\n,\r
正規表現の使用\\(?=([\\\*\+\?\|\{\[\(\)\^\$\.\#\ ]))\
\r\n
エスケープされていない文字列を提供する必要がある場合は、シーケンスを対応する CrLfに置き換えるだけで済みます。
"There\ is\ a\ \?\ after\ the\ \(white\)\ car\.\ \r\n\ it\ should\ be\ http://car\.com\?\r\n"
にエスケープされていません:
"There is a ? after the (white) car. \r\n it should be http://car.com?\r\n"
\r\n を削除すると、次のようになります。
There is a ? after the (white) car.
it should be http://car.com?