我有一个字符串:
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?
答案 0 :(得分:1)
sub
产生的字符串将始终为完全匹配。要获得捕获,您可以在块内使用$1
和$2
。