为什么"whatever".gsub(/.*/, "bien")
输出" bienbien"而不只是" bien"?
我完全迷失在这里:S任何人都可以指出我正确的方向吗?
答案 0 :(得分:1)
你可以看到使用一个块发生了什么:
>> 'foo'.sub(/.*/) { |m| p m; 'bar' }
"foo"
=> "bar"
>> 'foo'.gsub(/.*/) { |m| p m; 'bar' }
"foo"
""
=> "barbar"
>> 'foo'.gsub(/^.*/) { |m| p m; 'bar' }
"foo"
=> "bar"
>> 'foo'.gsub(/^.*$/) { |m| p m; 'bar' }
"foo"
=> "bar"
>> 'foo'.gsub(/.*$/) { |m| p m; 'bar' }
"foo"
""
=> "barbar"
>> 'foo'.gsub(/.+/) { |m| p m; 'bar' }
"foo"
=> "bar"
换句话说,gsub将继续匹配,并在最后一行匹配一个空字符串。 (这可以说是一个错误。)