From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22539 invoked by alias); 31 Jul 2018 05:14:11 -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: List-Unsubscribe: X-Seq: 23548 Received: (qmail 16959 invoked by uid 1010); 31 Jul 2018 05:14:11 -0000 X-Qmail-Scanner-Diagnostics: from mail-oi0-f43.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(209.85.218.43):SA:0(-1.9/5.0):. Processed in 0.492809 secs); 31 Jul 2018 05:14:11 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_PASS,T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.1 X-Envelope-From: sgniazdowski@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=9Q1gV9XDtcigBNuXhDVs9KFYVMgLAKDb5goBOIIlyY8=; b=rKFXPR0rsP+iyzlKXdMTWcZIap7tIjvDLlQ1vFc+TBM67cNcrnE9oyVAqZ3zfVvSVk qOoWVBbOSMiu+LJ1X6iuszWZ16PJkx2KjQYsD41qozKYykQjLDVbBobVVtundO7s8gTM QQ0fJ1+fOtUu70ksGYR2s6oCfTeMcECm84H0zbucd46sKBz64jtIPLBctb+p0p4SBAwJ Z9C5/DSHrA5sgK1F0KLY7bJFJqs1tPBNTV1kcEa+ILyjxFBtBG5g1HPaoYY5hv3WLQRM UdmbPi3ftBKz2WX8pt8oYz2iK1PldbQBiXlwPc5It7CN6nzD1q1L0A196oQ9E1DTJKWV Jcjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=9Q1gV9XDtcigBNuXhDVs9KFYVMgLAKDb5goBOIIlyY8=; b=lsyxJTNBhOB8lPaJDkjhbatmtCGXpoUtN8+HAYarGXBBk+4gdcA6mTrvL+oGxwYy5V vgV2Pkl8FwpxnUCEfK+nNJGfMaBH8d6hs9mGzeDY5vKt2yfF4rsfK/GsCR3b4xBPxBhj WJIUR1BjGA5ifzfMIYzvQbVy9A2CEsQG+6RysgAW5X+pddJSuw/sLfXOm+iho+5YG034 VFC8qA4Ek39dpT9TXpqpVtCfnIn0WFb9PnqE6Bjyx3/aUPFpCJLGVYij4uIIRdgyfEYb K3PTww3vyIq1ImRdrAriaXO+Ozxad1RKFTOsuszlvO/RPYTXaxeehkWDavBM2NUFIHA6 hTWQ== X-Gm-Message-State: AOUpUlGBmj8/NK5kAmuBmlx8lDylOusxqG8VQDodJgRqK3PZVTqH6qGj e2GOW5eDU25CmKz5iIKPUfwtoOEJBD/8TaUMW8rTDifU X-Google-Smtp-Source: AAOMgpfjlLEpIKOjP8xRPUnWn1MirRhqTkfHWNLtTaJyVxBZobkMjVg/oGayj8a61RRmteEhLEtDXj+3W/jbkE6WC9U= X-Received: by 2002:aca:df42:: with SMTP id w63-v6mr19765520oig.295.1533014048135; Mon, 30 Jul 2018 22:14:08 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: From: Sebastian Gniazdowski Date: Tue, 31 Jul 2018 07:13:47 +0200 Message-ID: Subject: Re: Discovered pattern that ideally parses any quoting. Brackets highlighting in FSH. To: Zsh Users Content-Type: text/plain; charset="UTF-8" There was __idx assign missing, and I fine-tuned readibility, so final version: _mybuf="A\AB'A'C" #input while [[ $_mybuf = (#b)[^ABC\"\'\\]#(([ABC\"\'])|[\\](*))(*) ]]; do [[ -n "${match[3]}" ]] && { __idx+=${mbegin[1]}+1 _mybuf="${match[3]:1}" # also skip 1 quoted char } || { __idx+=${mbegin[1]} [[ -z "$__quoting" ]] && { if [[ "${match[1]}" = [ABC] ]]; then echo "Got ${match[1]}" fi } # Toggle quoting [[ "${match[1]}" = \" && "$__quoting" != \' ]] && { [[ "$__quoting" = \" ]] && __quoting= || __quoting=\"; } [[ "${match[1]}" = \' && "$__quoting" != \" ]] && { [[ "$__quoting" = \' ]] && __quoting= || __quoting=\'; } # The last (*) in the pattern, i.e. remaining # string, to become next input to while _mybuf="${match[4]}" } done