Given the following data '817-017', 800000, 0, 0, 200000, 200000, 500000, 500000, 500000, 500000, 60000, 59122, 0, 800000, '817' How can I easily just select the first 4 elements (where elements 2,3 and 4 could be NULL)? At the moment I'm trying a regexp of the form line.sub!(/(VALUES \(\s*'\w',\s*[0-9]+,\s*[0-9]+,\s*[0-9]+|NULL).+/, '\1 '+');') I'm thinking that a split will be more productive, but then I've got to merge everything back together, sub + friends seems to be easier (although I'm struggling to get exactly what I want as output) Any thoughts + best practices/idioms etc would be very much appreciated Kev PS sorry to repeatedly spam on about this, but I have a deadline and I'd rather be using Ruby than C, Java, Python, Perl