From: Robert Dober Date: 2007-06-10T21:08:46+09:00 Subject: Re: regex: get the first match On 6/10/07, Trochalakis Christos wrote: > Hello! > > I want to parse a tagged string like this: "this ismy > string" > > i am doing: > > >> "this ismy string".scan(/(.*)<\/i>/) > => [["this ismy string"]] > > What i want is a regex that will return the *first* segment that > matches. > in the above case -> [["this is", "my string"]] > > Is there any way to do this? > > Thanks! > > > This is a FAQ, and yes I will give the solution ;) Regexps are gready par default, they consume as many chars as possible, there are some possibilities - not tested: (1) use non gready matches "this ismy string".scan(/(.*?)<\/i>/) (2) use less general expressions "this ismy string".scan(/(.[^<]*)<\/i>/) (3) Combine both ;) "this ismy string".scan(/(.[^<]*?)<\/i>/) HTH Robert P.S. This *really* is a FAQ though -- You see things; and you say Why? But I dream things that never were; and I say Why not? -- George Bernard Shaw