2011-01-02 14 views
1

私はRubyで文字列を持っている:私はこのような文字列を取得するためにGSUBを使用したいシンプルなRubyの正規表現の質問

str = "<TAG1>Text 1<TAG1>Text 2" 

を:つまり

want = "<TAG2>Text 1</TAG2><TAG2>Text2</TAG2>" 

を、私はですべてを保存したいです<TAG1>とEITHERの間:1)次の "<"の出現、または2)文字列の最後。

私が思い付くことができる最高の正規表現した

regex = /<TAG1>(.*)(?:<|$)/ 

しかし、これに伴う問題はそれだけで私がしたいことはSTR内の両方の試合で全体STRを、一致するだろうということです。 (つまり、文字列char($)の終わりが "<"文字よりも優先されているようです -

答えて

3

/<TAG1>([^<]*)/<それ以外の場合は、<に当たると停止します。問題は、<にも一致します。/<TAG1>(.*?)(?:<|$)/を別の方法で実行すると、*は貪欲ではありません。