On 21.9. 21:55, Dmitry Goncharov wrote:
On Sat, Sep 21, 2019 at 12:34:39PM +0300, Ilkka Virta wrote:
[[:space:]]*?(a)b  isn't a well-defined POSIX ERE:

    9.4.6 EREs Matching Multiple Characters

    The behavior of multiple adjacent duplication symbols ( '+', '*', '?',
    and intervals) produces undefined results.

https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/basedefs/V1_chap09.html

This is unfortunate.
*? and +? are widely used not greedy regexes.

In Perl-compatible regexes. Bash uses POSIX extended regular expressions.

And on a GNU system, while *? and +? don't give errors when used in an ERE, they still don't make the repetition non-greedy. They just act the same as a single * (as far as I can tell anyway).

 bash$ re='<.+?>'
 bash$ [[ "a<b>c<d>e" =~ $re ]] && echo $BASH_REMATCH
 <b>c<d>
 bash$ [[ "a<>e" =~ $re ]] && echo $BASH_REMATCH
 <>

--
Ilkka Virta / itvi...@iki.fi

Reply via email to