From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7674 invoked by alias); 8 Oct 2015 09:33:28 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 20708 Received: (qmail 9947 invoked from network); 8 Oct 2015 09:33:26 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.0 X-AuditID: cbfec7f4-f79c56d0000012ee-28-561636066af1 Date: Thu, 08 Oct 2015 10:23:15 +0100 From: Peter Stephenson To: zsh-users@zsh.org Subject: Re: Matching beginning and end of word Message-id: <20151008102315.0136766a@pwslap01u.europe.root.pri> In-reply-to: References: Organization: Samsung Cambridge Solution Centre X-Mailer: Claws Mail 3.7.9 (GTK+ 2.22.0; i386-redhat-linux-gnu) MIME-version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrMLMWRmVeSWpSXmKPExsVy+t/xa7psZmJhBvf7lSx2nFzJ6MDoserg B6YAxigum5TUnMyy1CJ9uwSujDMNe9gKXrFXXDpk2cA4ja2LkZNDQsBE4t/7u4wQtpjEhXvr geJcHEICSxkl1n1bzAThTGOS2DrrCyOEs5VR4kTrBlaQFhYBVYkVn9rYQWw2AUOJqZtmg40S ERCVWL5iM1hcWEBfYtOhrWD1vAL2ElsXPAKr4RQIlvi8fiMLiC0kECCx70oDWD0/UP3Vv5+Y IE6yl5h55QwjRK+gxI/J98DqmQW0JDZva2KFsOUlNq95ywwxR13ixt3d7BMYhWYhaZmFpGUW kpYFjMyrGEVTS5MLipPScw31ihNzi0vz0vWS83M3MUKC9ssOxsXHrA4xCnAwKvHw/jAWCRNi TSwrrsw9xCjBwawkwrtMWixMiDclsbIqtSg/vqg0J7X4EKM0B4uSOO/cXe9DhATSE0tSs1NT C1KLYLJMHJxSDYxS4bHlYjVL/St5a194yeVeE5tyqoDtcJht/3FWkaBz2krSvI/i5KqfPJ5d 8D/Rordc+4K++j/uptlLGJ5NtvOaH8idsWDHp90zmzubbl/mnmQ4x6Nu0k7Xj1vP6XgY3vse Ge18IZB5a9w2q/CQSRmt26fEV313KulScj16ZIF5Tt6O4jc6AUosxRmJhlrMRcWJADElXL9W AgAA On Thu, 8 Oct 2015 09:51:44 +0200 Sebastian Gniazdowski wrote: > in vim \< and \> match agains beginning and end of word. They work > like ^ and $ but for words, not lines. How to obtain this in Zsh? So > that in string like "abc_cd" the "cd" would not be matched, and in > "abc cd" only "cd" would be matched. So by "beginning of word", you mean "something that is either not preceded by anything, or is preceded by a non-word character"? (And similarly for end.) We do have the special chracter range [[:WORD:]]. So I think you need to check both possibilities, using the (#s) for start (or (#e) for end) that Bart pointed out yesterday. % [[ "foo bar" = *([^[:WORD:]]|(#s))bar* ]] && print yes yes % [[ "bar foo" = *([^[:WORD:]]|(#s))bar* ]] && print yes yes % [[ "obar foo" = *([^[:WORD:]]|(#s))bar* ]] || print no no Note [[:WORD:]] is a moving target, as determined by $WORDCHARS. See manzshexpn. End of word left as an exercise. pws