Использование gsub для удаления нескольких символов

#ruby #gsub

#ruby #gsub

Вопрос:

У меня есть объект, который содержит следующую строку "XXXXyyyy!!!!zzzz"

XXXX — никогда не бывает одинаковым, всегда будет меняться, это может быть длиной в миллион символов
yyyy — никогда не изменится, точное количество символов постоянно
!!!! — это данные, которые я хочу получить в результате после очистки строки. Эти данные также всегда будут меняться
zzzz — никогда не изменится, точное количество символов постоянно

итак, если:

 string = "XXXXyyyy!!!!zzzz"  
string.gsub("zzzz","")  
# => "XXXXyyyy!!!!"
  

Что я могу сделать дальше, чтобы получить просто "!!!!" . Как я могу использовать 'yyyy' , который является статическим, для удаления "XXXXyyyy" и оставить только "!!!!" . Я надеюсь, это объясняет мой вопрос. Извините за последнее.

Комментарии:

1. Пожалуйста, выделите свой код, сделав в нем отступ в четыре пробела или выделив его и нажав control k.

Ответ №1:

Вы должны сделать это за один раз:

 string[/yyyy(.*)zzzzz/, 1]  
  

Ответ №2:

С вашей первой попытки, если вы измените его на:

 string = "if(location.hostname.indexOf( 'edition.' ) > -1) {document.write('May 8, 2011 -- updated 1854 GMT (0254 HKT)');} else {document.write('May 8, 2011 2:54 p.m. EDT');}"

string.gsub(/^. else. '(. )'. $/, $1)
  

Должно получиться.

Комментарии:

1. Я думаю, что они ищут regex lookbehind.

2. Я сделал это в консоли, и он вернул: TypeError: не удается преобразовать nil в строку из (irb): 8: в `gsub’.

3. Виноват. Я был в консоли rails. Попробуйте это: string.sub(/^. else. ‘(. )’.*$/, $1)