如何使用反斜杠转义特定字符

时间:2014-06-13 13:15:28

标签: ruby

如何逃避保留字符?我想这样:

str = "http://something.tld/"    

成为这样的东西:

http\:\/\/something.tld\/

我的代码不起作用。

str.gsub(/(?<foo>[\+\-\&\|\!\(\)\{\}\[\]\^\"\~\*\?\:\\\/])/, '\\k<foo>' )

保留字符为:

+ - && || ! ( ) { } [ ] ^ " ~ * ? : \ /

1 个答案:

答案 0 :(得分:1)

逃避规则真的围绕这个规则变得毛茸茸,但它仍然很简单,试试

str.gsub(/(?<foo>[\+\-\&\|\!\(\)\{\}\[\]\^\"\~\*\?\:\\\/])/, '\\\\\k<foo>' )

你会得到

"http\\:\\/\\/something.tld\\/"

不要担心双反斜杠,它们只是irb尝试可视化此字符串中有真正的反斜杠。如果你问它的length25,那就是我想要的。