From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from primenet.com.au (ns1.primenet.com.au [203.24.36.2]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 7ba98420 for ; Fri, 27 Dec 2019 05:10:05 +0000 (UTC) Received: (qmail 24258 invoked by alias); 27 Dec 2019 05:10:00 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: List-Unsubscribe: X-Seq: 45148 Received: (qmail 15769 invoked by uid 1010); 27 Dec 2019 05:10:00 -0000 X-Qmail-Scanner-Diagnostics: from mail-vs1-f43.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.102.1/25670. spamassassin: 3.4.2. Clear:RC:0(209.85.217.43):SA:0(-2.0/5.0):. Processed in 1.603473 secs); 27 Dec 2019 05:10:00 -0000 X-Envelope-From: sgniazdowski@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _netblocks.google.com designates 209.85.217.43 as permitted sender) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=z9fvmPPJMQ6JiubuRjCY0mosjgu/uFYXFXaM1GhYO0c=; b=sFpl73Fik7cDGJUreeSXvxJR5s7vfKDV1cAg/MysGh6N4VGadP88Zp3MLg4ROw2ev9 NBfDu4zXsSkRyskbWPUuMStlBFEUMBEGmb+IVljvdOjV4ozJgimHQmB8nWWEK+NbFKdB qPNp26MJw4jsbvF40SDBARjMEo3vkjWOCvuoWM9twj9faFPhgtYElysrWhsSQFHYhtl2 X3ZhPMQgq3otDWZutwg40te0Nfzb678+QWyGGoytE4PRpUjnTl/zH0oJT4pM0QaJj7IG 9obk5/0kDxcqGT75flexRYDLLdnmuqH1b7tF+gM809VQtDc+kX0exG9FkEsmujtIcc+q 7j/Q== X-Gm-Message-State: APjAAAV66GySHVHzKZ9QLShPVAjK+sBA2A3P+BJmRJeWJXT7lags366J E+X6/QxwTom/Fq2z3SjH/h70R8e2f0Yi6fSk2pU= X-Google-Smtp-Source: APXvYqwGrj/OBRUW8il0QIdIFzZObh0KMIOytFGvQzI5VaTyV2iLW52SLUrhoTaa5B9AnINehf30keBKt8LPO+KBF2E= X-Received: by 2002:a67:ee13:: with SMTP id f19mr26910866vsp.147.1577423366345; Thu, 26 Dec 2019 21:09:26 -0800 (PST) MIME-Version: 1.0 References: <1a130b2e-5824-4b7a-8510-2b1d0b3fdac5@www.fastmail.com> In-Reply-To: From: Sebastian Gniazdowski Date: Fri, 27 Dec 2019 06:09:15 +0100 Message-ID: Subject: Re: [Bug] S-flag imposes non-greedy match where it shouldn't To: Daniel Shahaf Cc: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000699dcd059aa87f06" --000000000000699dcd059aa87f06 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable I've updated the trick. It's now: str=3D"abcXXXdefXXXghi" out=3D${(S)str%%(#b)([^X])X##(*)} out=3D$out$match[1]$match[2] The man page looks like http://psprint.blinkenshell.org/S_flag-2.png I think that the trick is minimal to get the job done, i.e.: to actually match a substring greedily starting from the right. On Fri, 27 Dec 2019 at 05:54, Sebastian Gniazdowski wrote: > > The trick is not right. I'll try to update it or otherwise change the > description. > > On Thu, 26 Dec 2019 at 19:35, Sebastian Gniazdowski > wrote: > > > > I've attached the extended description. It includes a trick to > > work-around the unintuitive behavior of S. It looks as follows: > > > > http://psprint.blinkenshell.org/S_flag.png > > > > I think that the way the S flag works is a bit of an inconsistency, > > Because ${str%%X##**} would not stop at the first from the right > > match, it would try other matches starting from the right and go on up > > to the final first from the left X. I think that (S) shouldn't change > > this, but on the other hand should ${(S)str%%X##} match the first > > three X? Rather not, as it would resemble ## then... Intuitively, > > however, it should match all the three right X. > > > > On Thu, 19 Dec 2019 at 16:30, Daniel Shahaf wr= ote: > > > > > > Sebastian Gniazdowski wrote on Wed, 18 Dec 2019 20:44 +00:00: > > > > Or rather not a bug=E2=80=A6 It seems that it's the result of how %= searches > > > > the substrings from the end =E2=80=93 it stops at the first match, = i.e.: after > > > > finding a first X from the right. > > > > > > Could we improve the documentation of (S), then? > > > > > > > > -- > > Sebastian Gniazdowski > > News: https://twitter.com/ZdharmaI > > IRC: https://kiwiirc.com/client/chat.freenode.net:+6697/#zplugin > > Blog: http://zdharma.org > > > > -- > Sebastian Gniazdowski > News: https://twitter.com/ZdharmaI > IRC: https://kiwiirc.com/client/chat.freenode.net:+6697/#zplugin > Blog: http://zdharma.org --=20 Sebastian Gniazdowski News: https://twitter.com/ZdharmaI IRC: https://kiwiirc.com/client/chat.freenode.net:+6697/#zplugin Blog: http://zdharma.org --000000000000699dcd059aa87f06 Content-Type: text/plain; charset="US-ASCII"; name="0001-Extend-description-of-S-flag.patch.2.txt" Content-Disposition: attachment; filename="0001-Extend-description-of-S-flag.patch.2.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k4np4vnb0 RnJvbSA4MTc2ZWYzMTUxODFkYzM4ZTQxZTgwYzY1MDlkNTkxYmRkZjg2ZGIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTZWJhc3RpYW4gR25pYXpkb3dza2kgPHNnbmlhemRvd3NraUBn bWFpbC5jb20+CkRhdGU6IFRodSwgMjYgRGVjIDIwMTkgMTk6MjI6NDEgKzAxMDAKU3ViamVjdDog W1BBVENIXSBFeHRlbmQgZGVzY3JpcHRpb24gb2YgUyBmbGFnCgotLS0KIERvYy9ac2gvZXhwbi55 byB8IDEzICsrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvRG9jL1pzaC9leHBuLnlvIGIvRG9jL1pzaC9leHBuLnlvCmluZGV4IGQ3MTQ3 ZGJkNy4uMzY4MTNkYzIwIDEwMDY0NAotLS0gYS9Eb2MvWnNoL2V4cG4ueW8KKysrIGIvRG9jL1pz aC9leHBuLnlvCkBAIC0xMzk5LDYgKzEzOTksMTkgQEAgZnJvbSB0aGUgYmVnaW5uaW5nIGFuZCB3 aXRoIHR0KCUpIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgc3RyaW5nLgogV2l0aCBzdWJzdGl0 dXRpb24gdmlhIHR0KCR7KS4uLnR0KC8pLi4udHQofSkgb3IKIHR0KCR7KS4uLnR0KC8vKS4uLnR0 KH0pLCBzcGVjaWZpZXMgbm9uLWdyZWVkeSBtYXRjaGluZywgaS5lLiB0aGF0IHRoZQogc2hvcnRl c3QgaW5zdGVhZCBvZiB0aGUgbG9uZ2VzdCBtYXRjaCBzaG91bGQgYmUgcmVwbGFjZWQuCitUaGUg c3Vic3RyaW5nIHNlYXJjaCBtZWFucyB0aGF0IHRoZSBwYXR0ZXJuIGlzIG1hdGNoZWQgc2tpcHBp bmcgdGhlCitwYXJ0cyBvZiB0aGUgaW5wdXQgc3RyaW5nIHN0YXJ0aW5nIGZyb20gdGhlIGRpcmVj dGlvbiBzZXQgYnkgdGhlIHVzZQorb2YgdHQoIykgb3IgdHQoJSkuIEZvciBleGFtcGxlLCB0byBt YXRjaCBhIHBhdHRlcm4gc3RhcnRpbmcgZnJvbSB0aGUKK2VuZCwgb25lIGNvdWxkIHVzZToKKwor ZXhhbXBsZShzdHI9ImFiY1hYWGRlZlhYWGdoaSIKK291dD0keyhTKXN0ciUlKCNiKShbXlhdKVgj IygqKX0KK291dD0kb3V0JG1hdGNoWzFdJG1hdGNoWzJdKQorCitUaGUgcmVzdWx0IGlzIHR0KGFi Y1hYWGRlZmdoaSkuIEl0IHdvdWxkIGhhdmUgYmVlbiB0dChhYmNYWFhkZWZYWGdoaSkKK2lmIHRo ZSBzdWJzdGl0dXRpb24gd291bGQgaGF2ZSBiZWVuIHR0KCR7KFMpc3RyJSVYIyN9KSwgYXMgZGVz cGl0ZSB0aGUKK3R0KCUlKSBzcGVjaWZpZXMgYSBncmVlZHkgbWF0Y2gsIHRoZSBzdWJzdHJpbmcg bWF0Y2hpbmcgd29ya3MgYnkKK3RyeWluZyBtYXRjaGVzIGZyb20gcmlnaHQgdG8gbGVmdCBhbmQg c3RvcHMgYXQgYSBmaXJzdCB2YWxpZCBtYXRjaC4KICkKIGl0ZW0odHQoSTopdmFyKGV4cHIpdHQo OikpKAogU2VhcmNoIHRoZSB2YXIoZXhwcil0aCBtYXRjaCAod2hlcmUgdmFyKGV4cHIpIGV2YWx1 YXRlcyB0byBhIG51bWJlcikuCi0tIAoyLjIxLjAKCg== --000000000000699dcd059aa87f06--