Date: Wed, 9 Sep 2009 10:46:47 -0700 From: George Davidovich <freebsd@optimis.net> To: freebsd-questions@freebsd.org Subject: Re: Regex Help - Greedy vs. Non-Greedy Message-ID: <20090909174647.GA65123@marvin.optimis.net> In-Reply-To: <4AA7D49D.8090002@mykitchentable.net> References: <4AA7D49D.8090002@mykitchentable.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Sep 09, 2009 at 09:15:25AM -0700, Drew Tomlinson wrote: > I'm trying to do a search and replace in vim. I have lines like this: > http://site1/dir/; > http://site2/dir/;LastName, FirstName;Phone; > http://site3/dir/;LastName, FirstName; > http://site4/dir/; > > I'm want to match "http:*" and stop matching at the first ";". My basic > regex is: > > /http:.\+;/ > > But it's matching *all* the semi-colons. Thus I've Googled and tried > various incatations to try and make my regex "non-greedy" but I can't > seem to come up with the correct combination. LOL. Do yourself a favour and stop "Googling". Vim has a built-in help system. To access help for regular expressions: :help regexp :he regexp :he r[TAB] ... and search for non-greedy (or just scroll down). > How can I write a regex that stops matching at the first semi-colon? You've already received a few answers, but I'll add one that may be even better -- rely on external programs instead. Vim can be a bit clunky at times. The simplest and most typical usage would be :[range] !command If using Perl $ perldoc -h $ perldoc -q regex -- George
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090909174647.GA65123>