我正在处理ruby中的一些长字符串,这些字符串可能有一些奇怪的转义字符。例如,一个对我造成问题的字符串就像:
s = "foobar \240 \241 \242 foobar\nfoobar"
puts s
foobar ? ? ? foobar
foobar
我正试图摆脱上面字符串中奇怪的\240
,\241
,\242
字符。有人能告诉我gsub的正则表达式吗?注意:我想保留\ n,只想删除任何有反斜杠后跟数字的内容。
基本上,有没有办法摆脱"\[one or more digits]"
这个怪癖一直困扰着我一段时间。我可以为给定的数字执行此操作,但无法找到在反斜杠后对任何数字进行常规替换的正则表达式。
答案 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