Robert Klemme wrote: >Kev Jackson wrote: > > >>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 '+');') >> >> > >Why do you use VALUES in the regexp? I cannot see it in your sample data. >It would be easier if you post sample output that you want to see. I'm >not sure about the "first 4" elements (is it characters? is it items in >the list?). > > Sorry about that, the original string is part of an insert statement INSERT INTO TABLE (FIELD, FIELD, FIELD) VALUES (STUFF, STUFF, STUFF etc...); -------------------------------------- regexp to munge this bit the first 4 elements would be '817-017', 800000, 0, 0 As someone else pointed out, split is a better tool for this job (and indeed having resolved the problem with split and join I now see my folly trying to use a regexp) kev