2013-07-24 4 views
-2

Я пытаюсь сделать GSUB, что, когда я делаю вход так:Regexp узор - GSUB рубин

'09/02 10:00 вс любой строки»

Даст меня что-то вроде :

'09/02 10:00'

Так что мой GSUB должен принять все строки, которые не являются числом, но мне нужно „:“ и „/“, чтобы остаться

Помощи пожалуйста.

+0

То, что вы описали бы дать '«09/0210: 00»', как в ответ vinodadhikary в , а не '' 09/02 10:00 «как вы даете. – sawa

+1

** Покажите нам, что вы пробовали до сих пор. ** Не описывайте это, но отредактируйте вопрос и вставьте фактический код. Тогда скажите нам, что не получилось. Что случилось, когда вы попробовали? Получили ли вы неправильные результаты? Вы получили * нет * результаты? Если результаты были неверными, что сделало их неправильными? Что вы ожидали вместо этого? Вы получили * любые * правильные результаты? Если да, то каковы они? Не заставляй нас гадать. –

ответ

1

принимает все строки, которые не являются числа, но мне нужно «:» и «/», чтобы остаться

"09/02 10:00 hs any string".gsub(/[^0-9\/:]/, '')  
# "09/0210:00" 
+0

Вам не нужно 'to_s' в конце. Вместо '0-9' вы должны использовать' \ d'. В противном случае, если у вас есть строка типа '" 0-9 \ /: "', вы можете сделать 'tr (" 0-9 \ /: "," ")'. – sawa

+0

@sawa, вы правы, не нужно 'to_s', как' gsub' возвращает строку, скопировать ошибку вставки :) – vee

0

Попробуйте это:

result = '09/02 10:00 hs any string'.gsub(/(?<=^\d{2}\/\d{2} \d{2}:\d{2}).*/, '') 

идея заключается в том, чтобы не захватить времени и даты сдачи его в назад '.

+0

Нет, это не так. Все строки остались прежними. Спасибо, в любом случае ! –

+0

@AlejoAmiras: Вы должны отобразить результат, а не старую переменную! Он работает, я его протестировал! –

+0

Я делаю это, но это не работает ... Мои входные и выходные данные одинаковы. –

Смежные вопросы