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.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 13425 invoked from network); 16 Aug 2023 18:33:41 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 16 Aug 2023 18:33:41 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1692210821; b=pWA76EcmkjvkIlzwKbtNGOTiNNDiNb7FjO0TKiosLyo5l3cC3JKLb6qxbaPfwqf5WVsT1Xfh+d QQ7D16wqFOqm0txTxuhowa1HQ0yCWhcnFN0WwXzNSPyXGWtcLJVJkfbtKUaAh7tlPlJG6rByqW EfmRSu/kaE2F30gjcD/GUecuPMzHCW4hcwi1qi41aH/Yfx65wztQ88omrp5OhoLJAHb7YW0W3i jFo7CtbUllZxTDtqQAZ1np6mbjZ1psi3tyTaJx+RS2JVqCtPgUXjbnMGRDdHbR+nR/wRuehfc9 VoLhr6wGG8UyI9Q2sSXYUGBqQ+fIYqXJLyC40l7EyJzB7g==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-vs1-f51.google.com) smtp.remote-ip=209.85.217.51; dkim=pass header.d=gmail.com header.s=20221208 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1692210821; bh=vNjwJd9RxnvoGCCPucSC7n9ALBUrV2E48g3Sbw3DUAo=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:MIME-Version: DKIM-Signature:DKIM-Signature; b=CEDqaSfvUF3NLMwTujfRsBKmKlvv3hEKzcR/W7ct5dfNBk/e2yuUDbS9yhmoFl5iOtY02mikwy VtlTLjPv//I0FsyOb9M6wp1RRPzcF73zLh3JsSf9DkDWvBY4Tvo4ZmK4Zlmr5GS5QPAYgEX20I ko9GmNndThIDSTmsGrNvmjIBEb+S10xWEfG6qEanC/doexL0Z0F2bm6fyDEqvLd/YMDWOjdRuc abPHiWIslUQIDZIdV0nLsg2Rn6+ndsCi/d7b0c2dfGEjbY3MkbZnETyIFY/nNDTEYKAvF9RbH3 c82mxGvxBuxqq72QwkapZ6iBsCIxrj2aQdecM918OX5SEQ==; 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:Content-Type:To:Subject:Message-ID: Date:From:MIME-Version:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=vxZzsv1FHNcjkXSpZfvaSXuMksHRMv6KYiiw/pWfe0c=; b=ca4znjTKh108+DtB9ZaJOImrzd mi3GmO5gnardEm/9OVc+pyXlrdI/+Dlml3JB9QAYLdcnm9KlAwMXqhK0Vt2Rq+pS5MMWXfEJYuEx0 oEwpq2ydtzsKkeBt0D24XplcGsUPjvkg0vDtVk7+Aqz3X7h5C4MKphAi6G8SZ2U4xs5XIU1v05Ubv XcMqjGHRY6sn5HIuohNrjCN1oQGJfNiLdoA2KnBXVKrJn9xaCyZYAk+sWCqofZ+6ju1hsQQ0Gh5L8 7Ov6L5Zd8dEGEhl5JCCdndjcPBEnObj3eC3vP6tA/Iy1+tcjBr8+ZHzwj9R86CiVqWfiuwpOeCVce wOdfXAIA==; Received: by zero.zsh.org with local id 1qWLKs-000BWS-7t; Wed, 16 Aug 2023 18:33:38 +0000 Authentication-Results: zsh.org; iprev=pass (mail-vs1-f51.google.com) smtp.remote-ip=209.85.217.51; dkim=pass header.d=gmail.com header.s=20221208 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-vs1-f51.google.com ([209.85.217.51]:56638) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1qWLKJ-000Ap4-B5; Wed, 16 Aug 2023 18:33:04 +0000 Received: by mail-vs1-f51.google.com with SMTP id ada2fe7eead31-44ae69a6b20so452765137.1 for ; Wed, 16 Aug 2023 11:33:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692210782; x=1692815582; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=vxZzsv1FHNcjkXSpZfvaSXuMksHRMv6KYiiw/pWfe0c=; b=WuJ9xV5UWXEzlXBpzgT7bQ0hbtTgXLgJtuJ5THsEh9y7o+qaRpXCNhDetv7RajiDJH pLGFmI5cQFHCQvYOnRpRWC8XOcKTYR6iqHkNsgIMAdPavL5i1wjb3CIXJEAWsxYXI+6S yNcgz3MDD9sPLj5LpguZ8NDh2xrrnxbWJj1XLsQXnvYy98nsyImJqCK6Hl6L+ViltjIL 1VQEWzDvv+H77NrL+0aYSO6RS1U+oP1jTLp+yk1GAj4wghLtwjt9/tbualVyuKK/nwfJ bSf5BWLREZPdf7sYvdKgxMVLEH1MNFZVIxlHxypY0efAEimmV1DxF+nH/Cq6Za+Ym4YG lshg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692210782; x=1692815582; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=vxZzsv1FHNcjkXSpZfvaSXuMksHRMv6KYiiw/pWfe0c=; b=jpv/YmfIQ1pnWjuj5D13c2qCI031Y1fuEggl3lqTgUoAhcKtDI//wmyQmtHowjXjTg eCfDDwoCjV6DElMAUkEw3Zf8wpMnNChfkX+cBsqIg3jwGEBQ/0yrG2Nh3L7sJgPJFJWQ dWRwpveOmQt+jLiaphZzWNDfVpCdKOR3ox6T+a1aoBsBFFH1DhiWumeYQ1uJxGqz/Cqw aLr+NyqtNLhSGydNwAgECH3dWI5Y+sTfQkz2YRRVAeXsxCb1/oF77NV/79VTRaO4PSwI 7vNr7DWa9u1PVq0av7mPWBWgTuQskwoAAhtWVsshk5jLUICwojYIEzA5Z/fBq8MqEKBP bGZw== X-Gm-Message-State: AOJu0YzhA0bAwa14vkmJy3JSaD9PZyLxGHB+MPypiDJ2EAzEmQS2JSQ+ ZMXY8eG8Apz6ytqMqRnS9Fz7aH3XtS5+0xG5vGAEgnqCW2lyMw== X-Google-Smtp-Source: AGHT+IG7ExYddLF89I+BnFuMlomInB+k4JteJqBJof0H17lcM7zX1dpNc66YNFQs/beCfxQg/qWCvWbvx8pBYsRD91M= X-Received: by 2002:a67:e356:0:b0:444:17aa:df60 with SMTP id s22-20020a67e356000000b0044417aadf60mr2389547vsm.13.1692210782193; Wed, 16 Aug 2023 11:33:02 -0700 (PDT) MIME-Version: 1.0 From: Andy Kluger Date: Wed, 16 Aug 2023 14:32:51 -0400 Message-ID: Subject: Help: f (repeat) modifier, and histsubstpattern + :s/l/r/ modifier escaping of [{()}] To: zsh-users@zsh.org Content-Type: text/plain; charset="UTF-8" X-Seq: 29149 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: Hello! For a small exercise I wanted to repeatedly remove empty pairs of brackets/braces/parentheses from a string, and started with this working solution: s=$1 l=$#s while (( 1 )) { s=${s//(\{\}|\(\)|\[\])} if [[ $#s < $l ]] { l=$#s } else { break } } print -r -- $s But I remembered reading about the f (repeat) modifier, and thought I'd try to remove the while loop. setopt histsubstpattern s='left[()]over' print -rl -- ${s:fs/(\\{\\}|\\(\\)|\\[\\])//} # printed: left[]over # expected: leftover I'm having two confusions: 1. Why do I need to double-backslash before each brace/bracket/parenthesis, rather than single-backslash? 2. Why doesn't the replacement seem to happen to each subsequent result of a former replacement? Thanks for any help! Andy