We're having a discussion on Ruby Core about how to speed up CSV. I'm trying to tune a Regexp that matches CSV fields. However, I'm seeing something I don't expect. Can someone explain this to me, please? >> ",".scan(/(?:^|,)(?:"()"|([^",]*))/) => [[nil, ""]] That's a simplified version of what I'm messing with. My question is, why does it only match once, when I expect two matches? The first match should be right at the beginning, and is basically (?:^ ... )(?: ... ([^",]*)). The second match should begin at the comma, being (?: ... ,)(?: ... ([^",]*)). What am I missing? James Edward Gray II