2014-12-25 7 views
0

Мне нужно извлечь строку «MT/23232». Я написал код ниже, но он не работает. Может ли кто-нибудь мне помочь здесь?Извлечение строки с использованием регулярного выражения

'Policy created with MT/1212' 
'Policy created with MT/121212' 
'Policy created with MT/21212121212' 

Я написал этот код

тзд = "MT/33235" ID = msg.scan (/ MT/\ d +/\ d + /) [0]

Но это не работаю для меня, может ли кто-нибудь помочь мне извлечь эту строку?

ответ

1

Вам нужно избежать косой черты, которая существует рядом с MT в вашем регулярном выражении, и вам не нужно иметь косую черту после \d+. А также я предлагаю вам добавить lookbehind, чтобы вы получили чистый результат. (?<=\s) Положительный lookbehind, который утверждает, что совпадению должен предшествовать символ пробела.

msg.scan(/(?<=\s)MT\/\d+/)[0] 

Если вы не заботитесь о предыдущем символе, то нижнее регулярное выражение будет в порядке.

msg.scan(/MT\/\d+/)[0] 

Пример:

> msg = 'Policy created with MT/21212121212' 
=> "Policy created with MT/21212121212" 
> msg.scan(/(?<=\s)MT\/\d+/)[0] 
=> "MT/21212121212" 
> msg.match(/(?<=\s)MT\/\d+/)[0] 
=> "MT/21212121212" 
+0

привет Avinash спасибо, но почему вы используете сканирование, вы могли бы использовать STring # [], правильно? – RAJ

+0

, чтобы выполнить одно совпадение, функции 'match' будет достаточно. –

+0

Да, но я говорю, что вы могли бы написать код, например puts msg [/ MT \/\ d + /], а не функцию сканирования, не так ли? потому что он всегда возвращает первое значение. – RAJ

1
your_string.scan(/\sMT.*$/).last.strip 

Если требуется подстрока может быть в любом месте строки, а затем:

your_string.scan(/\bMT\/\d+\b/).last.strip # "\b" is for word boundaries 

Или вы можете указать приемлемые цифры от так:

your_string.scan(/\bMT\/[0-9]+\b/).last.strip 

Наконец, если формат строки будет оставаться указанным вами, а затем:

your_string.split.last 
+0

привет Humza, спасибо Это работает. – RAJ

+0

Отметьте ответ как выбранный, если он ответит на ваш вопрос. – Humza

+0

Я не понимаю, что вы говорите, есть ли кнопка с именем «selected», которую мне нужно нажать? – RAJ

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