Gary C40 wrote:
> If I have this string:
> abcd1234abc123
> Now I want to separate the digit group with the non-digit group into an
> array like this ["abcd",1234,"abc",123]. It's like re.split in Python.
> How can I do it in Ruby with the least lines of code possible?
> 'abcd1234abc123'.split(/\d+/) only returns ["abcd","abc"]

If the regex has capturing groups you'll get those in the array as well.
'abcd1234abc123'.split(/(\d+)/) #=> ["abcd", "1234", "abc", "123"]

If you need the numbers as integers, you could use something like:
'abcd1234abc123'.scan(/(\D+)(\d+)?/).map {|nd,d| [nd,d.to_i]}
#=> [["abcd", 1234], ["abc", 123]]
(Maybe add flatten and compact)

or

res=[]
'abcd1234abc123'.scan(/(\D+)(\d+)?/) do
  res << $1
  res << $2.to_i if $2
end
res #=> ["abcd", 1234, "abc", 123]


HTH,
Sebastian
-- 
Jabber: sepp2k / jabber.org
ICQ: 205544826