10

<tag></tag>タグのペア間の値の内容を取得したいと思います。

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

<tag>
This is another one
</tag>

私が思いついた正規表現は

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

ただし、それは貪欲に見え、最後の最後まで括弧内のすべてをキャプチャしています</tag>。終了タグが表示されるたびに、それを一致グループとして扱い、最初からやり直すように、できるだけ怠惰にしたいと思います。

特定のシナリオで複数の一致を取得できるように、正規表現を作成するにはどうすればよいですか?

私が説明していることのサンプルを次のリンクに含めました

http://rubular.com/r/JW5M3rnqIE

注: これは XML ではなく、実際に既存の標準形式に基づいているわけでもありません。優れたパーサーを備えた本格的なライブラリのような洗練されたものは必要ありません。

4

1 に答える 1

14

正規表現パターンを使用します:

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

怠け者 (貪欲でない) は.*?、 ではありません.*

複数の出現箇所を見つけるには、次を使用します。

string.scan(/<tag>(.*?)<\/tag>/im) 
于 2012-10-14T18:39:15.857 に答える