1

我正在处理 ruby​​ 中的一些长字符串,其中可能有一些奇怪的转义字符。例如,一个给我带来问题的字符串是这样的:

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

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

本质上,有没有办法摆脱表单的所有子字符串"\[one or more digits]"

这个怪癖已经让我烦恼了一段时间。我可以对给定的数字执行此操作,但找不到对反斜杠后的任何数字进行一般替换的正则表达式。

4

2 回答 2

2

使用这个正则表达式:\\\d+. 它匹配\240, \241, \242.

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

于 2011-07-05T09:41:17.943 回答
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
于 2011-08-03T22:34:17.777 回答