Regex Help - Greedy vs. Non-Greedy
George Davidovich
freebsd at optimis.net
Wed Sep 9 17:46:48 UTC 2009
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
More information about the freebsd-questions
mailing list