Rails に「これは Twitter メッセージです。#books War & Peace by Leo Tolstoy.I love this book!」という文字列があり、テキストを解析して、「War & Peace by Leo Tolstoy」のような特定のフレーズのみを抽出したいと考えています。レオ・トルストイ」。
これは、正規表現を使用して「#books」間のテキストを「.」に持ち上げることの問題ですか?
メッセージに構造がない場合はどうなるでしょうか。たとえば、「これは Twitter のメッセージです #books War & Peace by Leo Tolstoy I love this book!」などです。または「これは Twitter メッセージです。Leo Tolstoy の War & Peace #books」という本が大好きです。
これを行うのに役立つgem、メソッドなどはありますか?
少なくとも、私がやろうとしていることを何と呼びますか? Google で解決策を検索するのに役立ちます。「解析」でいくつかの検索を試みましたが、うまくいきませんでした。
--- 編集 --- @rogeliog の提案に基づいて、以下を追加します。
#books の後に来るゴミのテキストは我慢できますが、それ以前は何もありません。「match.(/#books.*/)」を試してみました -- 結果はこちら: www.rubular.com/r/gM7oSZxF5M .
しかし、どうすれば結果 #6 をキャプチャできますか? (例: #books を文末に置くとき)?
正規表現で if-then を実行する方法はありますか? 何かのようなもの:
[#books がメッセージの末尾にある] 場合、
[#books の前の最後の 10 語を取得]、
そうでなければ [マッチ.(/#books.*/)]
正規表現を提供する場合は、rubular.com を使用してパーマリンク経由でソリューションを投稿してください。