I don't know how efficient (or not efficient)
split is. I assume that since split finds the first match in the string (rather then the last) that it isn't using greedy pattern matching. If this is the case, then the matches start at the begining and iterate to the end (whereas greedy goes the other direction) and this means that stuff tacked onto the end of the string won't alter the "efficiency" of the match except in the case where no match is found. I think. I trust that some of the more experienced (and knowledgable) gurus amongst us will correct me if I'm wrong. If I'm right, then there is no efficiency loss with my method.
By the way, there is no garuntee that your not using a temporary variable will keep one from being created. Compilers are funny things that way.