From owner-freebsd-questions@FreeBSD.ORG Wed Sep 9 16:27:00 2009 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 484AD1065692 for ; Wed, 9 Sep 2009 16:27:00 +0000 (UTC) (envelope-from mel.flynn+fbsd.questions@mailing.thruhere.net) Received: from mailhub.rachie.is-a-geek.net (rachie.is-a-geek.net [66.230.99.27]) by mx1.freebsd.org (Postfix) with ESMTP id 196908FC22 for ; Wed, 9 Sep 2009 16:26:59 +0000 (UTC) Received: from smoochies.rachie.is-a-geek.net (mailhub.rachie.is-a-geek.net [192.168.2.11]) by mailhub.rachie.is-a-geek.net (Postfix) with ESMTP id 993FD7E818; Wed, 9 Sep 2009 08:27:11 -0800 (AKDT) From: Mel Flynn To: freebsd-questions@freebsd.org Date: Wed, 9 Sep 2009 18:26:57 +0200 User-Agent: KMail/1.11.4 (FreeBSD/8.0-BETA4; KDE/4.2.4; i386; ; ) References: <4AA7D49D.8090002@mykitchentable.net> In-Reply-To: <4AA7D49D.8090002@mykitchentable.net> MIME-Version: 1.0 Content-Type: Text/Plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200909091826.57212.mel.flynn+fbsd.questions@mailing.thruhere.net> Cc: Drew Tomlinson Subject: Re: Regex Help - Greedy vs. Non-Greedy X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Sep 2009 16:27:00 -0000 On Wednesday 09 September 2009 18:15:25 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. > > How can I write a regex that stops matching at the first semi-colon? AFAIK, there's no greediness modifier in vim regex. However, you can use character classes to solve your problem: %s/http:[^;]\+/foo/g -- Mel