2014-10-28 3 views
-5

У меня есть строка, какэкстракт строки с использованием регулярных выражений рубинового

"The Fashion Project - The Project of Fashion-Technology and Science-institute" 

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

array[0] = "The Fashion Project" 
array[1] = "The Project of Fashion-Technology and Science-institute" 

Я попробовал его с раздельным методом, но массив [1] вернулся «Проект моды» Я попробовал это, как

"The Fashion Project - The Project of Fashion-Technology and Science-institute".split('-') 
+0

Я полагаю, вы всегда хотите разделить на первый дефис. Если нет, то он не является корректным (например, проект Up-Tempo Project - проект ...), если также не имеет значение промежуток между дефисами. –

+0

Вы пробовали 'str.split (/ \ s + - \ s + /)'? –

ответ

-1

Вы можете попробовать это также

2.1.2 :007 > s = "The Fashion Project - The Project of Fashion-Technology and Science-institute" 
=> "The Fashion Project - The Project of Fashion-Technology and Science-institute" 
2.1.2 :008 > s.split(/\s[-\b]\s/) 
=> ["The Fashion Project", "The Project of Fashion-Technology and Science-institute"] 
2.1.2 :009 > 
+1

'\ b' не делает то, что вы думаете внутри класса символов. – hwnd

2

Вы можете попробовать ниже суб команды чтобы удалить часть, включая первый символ -,

"The Test Project - The Project of Fashion-Technology and Science-institute".sub(/^[^-]*- */,"") 
=> "The Project of Fashion-Technology and Science-institute" 

Пояснение:

  • ^ Утверждается, что мы находимся в начале.
  • [^-]* Соответствует любому символу, но не - ноль или более раз.
  • - Соответствие -
  • <space>* Соответствует нулю или нескольким пробелам.

Update:

> "The Test Project - The Project of Fashion-Technology and Science-institute".split(/\s-\s/) 
=> ["The Test Project", "The Project of Fashion-Technology and Science-institute"] 
+0

Well Explanation ... 1+ для этого –

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