У меня есть строка в Rails, например: «Это сообщение в Твиттере. #Books War & Peace Лео Толстого. Я люблю эту книгу!», И я хочу проанализировать текст и извлечь только определенные фразы, например «Война».& Мир Льва Толстого ".
Это вопрос использования Regex и переноса текста между "#books" в "."?
Что, если в сообщении нет структуры, например: «Это сообщение в Твиттере # Книги Война и мир» Льва Толстого. Мне нравится эта книга! »или «Это сообщение в Твиттере. Мне нравится книга« Война и мир »Льва Толстого #books» Как мне надежно вытащить фразу «Война и мир Льва Толстого», не зная фразы ex ante.
Существуют ли какие-либо драгоценные камни, методы и т. Д., Которые могут помочь мне сделать это?
Как бы вы назвали то, что я пытаюсь сделать?Это поможет мне найти решение в Google.Я попытался несколько поисков "разбора" без удачи.
--- edit --- на основе предложения @rogeliog, я добавлю следующее:
Я могу жить с мусорным текстом, который идет после #books, но ничего раньше.Я попробовал "матч. (/ # Books. * /)" - результаты здесь: www.rubular.com / r / gM7oSZxF5M .
Но как мне получить Результат № 6?(например, когда кто-то ставит #books в конце предложения)?
Есть ли способ для меня сделать if-then с регулярным выражением?Что-то вроде:
, если [#books находится в конце сообщения],
затем [взять последние 10 слов, предшествующих #books],
else[match. (/ # books. * /)]
Если вы предлагаете регулярное выражение, пожалуйста, опубликуйте свое решение через постоянную ссылку, используя rubular.com