bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Regex: A case where the longest match isn't being found


From: Dan Bornstein
Subject: Regex: A case where the longest match isn't being found
Date: Thu, 26 Oct 2023 10:50:13 -0700
User-agent: Cyrus-JMAP/3.9.0-alpha0-1048-g9229b632c5-fm-20231019.001-g9229b632

Configuration Information [Automatically generated, do not change]:
Machine: aarch64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -O2 -ftree-vectorize -flto=auto -ffat-lto-objects -fexcepti\
ons -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY\
_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-\
cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -ma\
rch=armv8.2-a+crypto -mtune=neoverse-n1 -mbranch-protection=standard -fasynchro\
nous-unwind-tables -fstack-clash-protection
uname output: Linux i-062640626b26bd9ed.us-west-2.compute.internal 6.1.25-37.47\
.amzn2023.aarch64 #1 SMP Mon Apr 24 23:19:51 UTC 2023 aarch64 aarch64 aarch64 G\
NU/Linux
Machine Type: aarch64-amazon-linux-gnu

Bash Version: 5.2
Patch Level: 15
Release Status: release

Description:

I found a case where the regex evaluator doesn't seem to be finding the longest 
possible match for a given expression. The expression works as expected on an 
older version of Bash (3.2.57(1)-release (arm64-apple-darwin22)).

Here's the regex: ^(\$\'([^\']|\\\')*\')(.*)$

(FWIW, this is meant to capture a string that looks like an ANSI-style literal 
string, plus a "rest" for further processing.)

Repeat-By:

For example, run this:

[[ $'$\'foo\\\' x\' bar' =~ ^(\$\'([^\']|\\\')*\')(.*)$ ]] && echo 
"${BASH_REMATCH[1]}"

On v5.2, this prints: $'foo\'
On v3.2.57, this prints: $'foo\' x'


reply via email to

[Prev in Thread] Current Thread [Next in Thread]