From: Rick DeNatale Date: 2006-08-13T04:59:54+09:00 Subject: Re: String#split(/\s+/) vs. String#split(/(\s+)/) On 8/12/06, Jan Svitok wrote: > On 8/12/06, Eero Saynatkari wrote: > > Sam Kong wrote: > > > Hello Rubyists, > > > > > > I'm reading Ruby Cookbook. > > > The first chapter is about String. > > > One of the examples shows the differenct between String#split(/\s+/) and > > > String#split(/(\s+)/) without much explanation. > > > I understand what sub-grouping is in regex. > > > Bug I don't understand what role that plays in String#split. > > > > > > s = "one two three" > > > > > > p s.split(/\s+/) #=> ["one", "two", "three"] > > > p s.split(/(\s+)/) #=> ["one", " ", "two", " ", "three"] > > > > # Try this one > > p s.split /((((\s+))))/ > > > > > > > > Could anybody explain it, please? > > > > > > Thanks, > > > Sam > > Seems like all groups in the separator regex are output to the result array. > > I wonder where is it documented, except for the source itself? > (string.c, rb_str_split_m()) Well the pickaxe (2nd ed.) says so: "If pattern is a Regexp, str is divided where the pattern matches. Whenever the pattern matches a zero-length string, str is split into individual characters. If pattern includes groups, these groups will be included in the returned values." Ruby-doc.org doesn't have that last sentence, in either the 1.8 nor the 1.9 documentation. -- Rick DeNatale http://talklikeaduck.denhaven2.com