使用gsub和regex删除ruby字符串中的某些转义字符

时间:2011-07-05 09:35:07

标签: ruby regex gsub

我正在处理ruby中的一些长字符串,这些字符串可能有一些奇怪的转义字符。例如,一个对我造成问题的字符串就像:

s = "foobar \240 \241 \242 foobar\nfoobar"
puts s
foobar ? ? ? foobar
foobar

我正试图摆脱上面字符串中奇怪的\240\241\242字符。有人能告诉我gsub的正则表达式吗?注意:我想保留\ n,只想删除任何有反斜杠后跟数字的内容。

基本上,有没有办法摆脱"\[one or more digits]"

形式的所有子串

这个怪癖一直困扰着我一段时间。我可以为给定的数字执行此操作,但无法找到在反斜杠后对任何数字进行常规替换的正则表达式。

2 个答案:

答案 0 :(得分:2)

使用此正则表达式:\\\d+。它与\240\241\242匹配。

这意味着Literal \, any digit one or more repetitions

答案 1 :(得分:0)

您可以使用Regexp类为特定范围的字符创建模式并替换它。

s = "foobar \240 \241 \242 foobar\nfoobar"
min = 240
max = 242
pattern = Regexp.new "[\\#{min}-\\#{max}]"
puts s.gsub(pattern, '*')

将输出:

foobar * * * foobar
foobar