1

我有一个字符串:

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

我想在子方法的 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?

4

1 回答 1

1

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

于 2011-10-16T18:45:34.620 回答