regexp中的大括号用于ruby子方法块

时间:2011-10-16 18:40:23

标签: ruby regex gsub

我有一个字符串:

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

我想在suby方法中获取ruby块中的aaa和bbb。 如果我打电话:

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

一切都按预期工作,因此输出为“first = aaa second = bbb”。 然后我用ruby-block调用相同的正则表达式,但它只返回整个字符串,但不返回\\ 1和\\ 2部分:

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

此案例输出

<aaa>bbb</ccc>, nil. 

如何在ruby-block中为子方法获取大括号中的句子,如\\ 1,\\ 2?

1 个答案:

答案 0 :(得分:1)

sub产生的字符串将始终为完全匹配。要获得捕获,您可以在块内使用$1$2