#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)