From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 23477 invoked from network); 27 Jan 2023 13:37:13 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 27 Jan 2023 13:37:13 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1674826633; b=PpQhPpwPem5O958flNaVgFizo7Ap+53IIXt5Vy+uTLnIgRYL6eMe7EJPz9YQ5w15wKLHOvu41W vrFAUPFUphLbnG1UM9s6O4ekPYm1/NLjx98aYw5ukljVPOhKCw2j08tE4oB+DjNCjh8KFeZSQc JzlIv6rNEFuov7nNKWCwc0eCqgyznMNo2+onSzIMAgqZdNBd5Adqis2fdz4n4LYIXQZ4tQZFQK I40kVF1Kw3d9VAisYSAlA7P5xm4cYuIMV28eZK4RudK4qR2ikNdNIpRFVo34ZKAPqi/nj8FQG9 9xeznK3KWqIPm9KZRBbIsb/B+3w0pHfjjVUzJ58nvPM+oA==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (relay8-d.mail.gandi.net) smtp.remote-ip=217.70.183.201; dmarc=none header.from=chazelas.org; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1674826633; bh=aIsLrG3EJGRYDce7FqYsgunJ2vsPaDxnXIvnChzmit0=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:In-Reply-To:Content-Type:MIME-Version:References:Message-ID: Subject:To:From:Date:DKIM-Signature; b=aorIvnDwF2bFRu4FQQ8JadUDedrSAtphCgTdZBWdAZDAqhwJDSyB8wGhhnJhsSrZj7udWsuC4u LjJxrgN0zeCM4ds+MSQPJgS2xzHTOxo81g5QDx+s92eEsgBq/ylea6MTngNYldZ8WN+LxSkRhF aMKdY7Qv/Eod9bi7p9wb4emOXYh1be/2VUepueHZQqXwlnnSNZYExoT7GLsXTyOa0dbhJCkcEQ bCvxY2Ya+wgwbFr3YuPdJ9V/yEkwkdF3WUZeDZafyRA8TMr662f52jOtsfs6kpZdtV2uPKmIik NtSA4sVqGqQ9Ia7y3sMqBFiLadgRac+i8K/Ni4YU/BhI9w==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:In-Reply-To:Content-Type:MIME-Version :References:Message-ID:Subject:To:From:Date:Reply-To:Cc: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=RuaUCD+kJu16croxMXNs+sjGgmyDQCXB/LpAYrJO+gk=; b=KBF8wp60xLLYcubnHD+Ot+os7u maa6a57nW+0OYU0xqKZgzfpUnLHFUawMz4bLx3smQ4++885UniVt1Lx6wUm/3LKH7N1nf131iwVrs liazFKkAj22pimGlHMThNqqH4J1YXK+Yp9ThEkORjtjJTJtc//pLJudIBtMeYtyFP+5IMyxNo4gLf mp92DRxEf/IWu1fbXwv3sMFEOu4pI5/S15WYSLcSNigA0WMZUlSlzh8988Kw5XPWATa8SETcXgGLh zX4WPU9D5bvA4OJyb6JUxu8OCvnFhMdl8ykqSoPkOSyC6BE5PqildZH9xknn67+MddIItntxkPngw kDMzan5w==; Received: by zero.zsh.org with local id 1pLOun-000H5Z-GH; Fri, 27 Jan 2023 13:37:13 +0000 Authentication-Results: zsh.org; iprev=pass (relay8-d.mail.gandi.net) smtp.remote-ip=217.70.183.201; dmarc=none header.from=chazelas.org; arc=none Received: from relay8-d.mail.gandi.net ([217.70.183.201]:60521) by zero.zsh.org with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1pLOtE-000GLA-Us; Fri, 27 Jan 2023 13:35:37 +0000 Received: (Authenticated sender: stephane@chazelas.org) by mail.gandi.net (Postfix) with ESMTPSA id EB7C51BF209; Fri, 27 Jan 2023 13:35:35 +0000 (UTC) Date: Fri, 27 Jan 2023 13:35:35 +0000 From: Stephane Chazelas To: Sebastian Gniazdowski , Zsh Users Subject: Re: Possible to match string supporting backslash quoting? Message-ID: <20230127133535.7dlqxpnx4f4pppp6@chazelas.org> Mail-Followup-To: Sebastian Gniazdowski , Zsh Users References: <20230127133003.spbcjjecye6lz5gp@chazelas.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230127133003.spbcjjecye6lz5gp@chazelas.org> X-Seq: 28828 Archived-At: X-Loop: zsh-users@zsh.org Errors-To: zsh-users-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-users-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: 2023-01-27 13:30:03 +0000, Stephane Chazelas: [...] > to match a quoted > string while handling backslash escaping, in ERE, you do: > > "(\\.|[^\\"])*" > > Whose zsh -o extendedglob equivalent would be: > > "(\\?|[^\\"])#" [...] For instance, to requote the double-quoted strings with single quotes: ~$ text='"quoted\\" not "quoted\"quoted" not' ~$ pattern='"(\\?|[^\\"])#"' ~$ print -r -- ${text//(#m)$~pattern/${(qq)${(Q)MATCH}}} 'quoted\' not 'quoted"quoted' not -- Stephane