On 1 Oct 2002 at 18:47, [EMAIL PROTECTED] wrote: > > > all text up to, but not including the string "union". > > > > rule getstuffbeforeunion { (.*?) union | (.*) } > > > > "a union" => "a " > > "b" => "b" > > hmm... well, it works, but its not very efficient. It basically > scans the whole string to the end to see if there is a "union" string, and > then backtracks to take the alternative. And hence, its not very scalable. > It also doesn't 'complexify' very well.
What about Perl 5: /(.*?)(?:union|$)/ Perl 6: /(.*?) [union | $$]/ or if you want to exlude 'union' from match Perl 5: /(.*?)(?=union|$)/ Perl 6: /(.*?) [<after: union> | $$]/ IMHO those should scan string one char at a time until 'union' or end- of-string, which is optimal solution. -- Markus Laire 'malaire' <[EMAIL PROTECTED]>