2012-11-02 12 views
6

ルビーを使用して特定の単語に含まれるテキストに興味がある場合、どのように進めるかを知りたかったのです。例えば、 。使用2つの特定の単語の間に含まれる部分文字列を取得する

@var = "Hi, I want to extract container_start **ONLY THIS DYNAMIC CONTENT** container_end from the message contained between the container_start and container_end " 
@var[/container_start(.*?)container_end/, 1] # => " **ONLY THIS DYNAMIC CONTENT** " 
+0

あなたが使っているテクノロジですか? – RAJ

+0

ありがとう、ruby on railsで作業しています –

+0

もしあなたがhtmlタグマッチャー正規表現を調べているなら、おそらくそれをつかむ方法を知っているでしょう。 – HungryCoder

答えて

13

単純な正規表現がどうなるつまりダイナミックが、常に二つの容器(container_startcontainer_end)内に含まれる文字列から、大文字のコンテンツを抽出したいです同じ正規表現ビクターによって与えられた、あなたもすることができます

var.split(/container_start(.*?)container_end/)[1] 
+0

答えをいただきありがとうございます。 –

+0

この投稿(または類似の投稿)が見つからなかった場合、どのようにこの回答が見つかりましたか?これは非常に直感的ではない解決策として私を襲う。ちょっと興味があるんだけど。 – Tass

+0

@ victor-deryagin ..私はこれらに新しいので、非常に基本的な質問は、なぜそれが正規表現で使用される1、 – twinkle

3

@var = "Hi, I want to extract container_start ONLY THIS DYNAMIC CONTENT container_end from the message contained between the container_start and container_end " 

は今、私は

1

正規表現以外の答えを提供するだけで、2つの.splitを使用して配列の項目を選択することもできます。

=> @var = "Hi, I want to extract container_start ONLY THIS DYNAMIC CONTENT container_end from the message contained between the container_start and container_end " 
=> @var.split("container_start ")[1].split(" container_end")[0] 
=> "ONLY THIS DYNAMIC CONTENT" 

.splitは、文字列を引用符で囲んで文字列を分割します。 [1]はそのテキストの後の部分を選択します。 2番目のカットでは、 "container_end"の前に部分が必要なので、[0]を選択します。

先頭と末尾のスペースを削除するには、2つの.split部分文字列にスペースを残す必要があります。または、.lstripと.rstripを使用します。

"container_start"と "container_end"の文字列がそれ以上ある場合は、2つの部分文字列の間で@varの正しい部分を選択するように配列セレクタを調整する必要があります。

関連する問題