我有一个字符串:
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调用相同的regexp,但它只返回整个字符串,而不是\1和\2部分:
s.sub(/<([a-z]+)>([\s\S]+)<\/[a-z]+>/) { |x,y| puts x; puts y; }这个案例的输出是
<aaa>bbb</ccc>, nil. 我怎样才能在子方法的ruby-block中得到像\1,\2这样的大括号中的句子?
发布于 2011-10-17 02:45:35
sub生成的字符串将始终是完全匹配的。要获取捕获,可以在块中使用$1和$2。
https://stackoverflow.com/questions/7786449
复制相似问题