удаление некоторых экранированных символов в строке ruby ​​с использованием gsub и regex - PullRequest
1 голос
/ 05 июля 2011

Я имею дело с некоторыми длинными строками в ruby, которые могут содержать некоторые странные экранированные символы. Например, одна строка, которая вызывает у меня проблемы, выглядит так:

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

Я пытаюсь избавиться от странных \240, \241, \242 символов в приведенной выше строке. Может кто-нибудь сказать мне регулярное выражение для gsub, который делает это? Примечание: я хочу сохранить \ n, просто хочу избавиться от всего, что имеет обратную косую черту, за которой следует число.

По сути, есть ли способ избавиться от всех подстрок вида "\[one or more digits]"

Этот причуд уже давно меня раздражает. Я могу сделать это для заданного числа, но не могу найти регулярное выражение, которое заменяет любое число после обратной косой черты.

Ответы [ 2 ]

2 голосов
/ 05 июля 2011

Используйте это регулярное выражение: \\\d+. Это соответствует \240, \241, \242.

Это значит Literal \, any digit one or more repetitions.

0 голосов
/ 04 августа 2011

Вы можете использовать класс Regexp, чтобы создать шаблон для определенного диапазона символов и заменить его.

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

выведет:

foobar * * * foobar
foobar
...