2012-10-14 7 views
6

<tag></tag>タグのペアの間の任意の値の内容を取得したいと思います。正規表現を使って複数のグループにマッチするレイジー(ungreedy)

<tag> 
This is one block of text 
</tag> 

<tag> 
This is another one 
</tag> 

私が出ている正規表現はしかし

/<tag>(.*)</tag>/m

あり、貪欲であるように思われる、非常に最後まで</tag>囲まれた括弧内のすべてをキャプチャしています。可能な限り怠惰で、終了タグが見つかるたびにマッチグループとして扱い、やり直すようにしたいと思います。

与えられたシナリオで複数の一致を得ることができるように正規表現を書くにはどうすればよいですか?

私は、私は次のリンク

http://rubular.com/r/JW5M3rnqIE

ノートに記述しています何のサンプルが含まれている:これはXMLではない、またそれは、既存の標準フォーマットに基づいて実際にあります。素敵なパーサーが付いている本格的な図書館のように洗練されたものは必要ありません。正規表現パターンと

+1

もう一つ重要なことは、XMLにregexenを使用していることである[あなたはCtulthuで遊んでいる](http://stackoverflow.com/questions/1732348)。後で、警告されていないとは言わないでください。 –

+0

@BorisStitnicky、こちらはカーゴカルトの必要はありません。正規表現は再帰的ではありません。 – nalply

+2

...正規表現でHTMLを解析しようとするたびに、不潔な子供は処女の血を泣かせ、ロシアのハッカーはあなたのwebappをプル... reordinary exp resion paringの歌はmorの声を張り出す私はそれがあなたが見ることができることを見ることができますそれは美しいですか?彼は男の嘘の最後の鼻を切っているすべてのLO LOVERSすべて私は失われた –

答えて

11

ゴー:(非欲張り)

/<tag>(.*?)<\/tag>/im 

レイジーは.*?、ない.*です。複数の出現を検索するに

、使用:あなたが知るため

string.scan(/<tag>(.*?)<\/tag>/im) 
+0

また見てくださいhttp:// www。 regular-expressions.info/ruby.html –

+0

ありがとう!私はルビーが正規表現のために持っていたものを試してみることを考えなかった。 – MxyL

+0

@日本 - あなたは大歓迎です。がんばろう! –