1

私は文字列を持っています:

s = "<aaa>bbb</ccc>"

サブメソッドのrubyブロックでaaaとbbbを取得したい。私が電話した場合:

s.sub(/<([a-z]+)>([\s\S]+)<\/[a-z]+>/,"first=\\1 second=\\2")

すべてが期待どおりに機能するため、出力は「first = aaasecond=bbb」になります。次に、ruby-blockを使用して同じ正規表現を呼び出しますが、文字列全体のみが返され、\\1と\\2の部分は返されません。

s.sub(/<([a-z]+)>([\s\S]+)<\/[a-z]+>/) { |x,y| puts x; puts y; }

この場合の出力は

<aaa>bbb</ccc>, nil. 

subメソッドのruby-blockで\\1、\\ 2のような中かっこで文を取得するにはどうすればよいですか?

4

1 に答える 1

1

によって生成される文字列は、sub常に完全一致になります。$1キャプチャを取得するには、$2ブロック内で使用できます。

于 2011-10-16T18:45:34.620 に答える