正则表达式/从红宝石中的字符串中删除斜杠

时间:2012-04-01 00:41:24

标签: ruby regex string gsub slash

提前致谢...

我在ruby中使用正则表达式时遇到了一些麻烦,或者找到了从字符串中删除斜杠的方法。这是我的字符串的样子:

string = "word \/ word"

我试图删除反斜杠和斜杠;我想要这个结果:

string = "word  word"

我想我错过了一些有逃脱角色的东西,或者谁知道什么!

我试过这个:

string.gsub(/\//, "")

将删除反斜杠,但保留斜杠。我尝试过各种各样的转义字符,甚至没有任何意义!

我对正则表达式感到非常糟糕,并且在使用字符串方面非常沮丧,我只是不知所措。我确定这是显而易见的,但我错过了什么?

3 个答案:

答案 0 :(得分:4)

原因是因为/\在Regexp中都不是有效字符。所以他们必须通过在他们面前加\来逃脱。因此\变为\\/变为\/。将这些放在另一组斜杠中以制作Regexp文字,我们得到:

string.gsub(/\\\//, "")

另一种写这个的方法是:

string.gsub(/#{Regexp.escape('\/')}/, "")

你应该查看rubular以获得开发Regexp字符串的好方法。

http://rubular.com/r/ml1a9Egv4B

答案 1 :(得分:3)

str = "word \/ word"
p str.delete('\/') #=>"word  word"
# to get rid of the double spaces:
p str.delete('\/').squeeze(' ') #=>"word word"

答案 2 :(得分:0)

它实际上是你想要的,但不是你想的原因:

string = "word \/ word"
# => "word / word"
string.gsub(/\//, "")
# => "word  word"

注意:你需要gsub!如果要替换字符串

的内容