Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > gnu.bash.bug > #15396 > unrolled thread

Re: Incorrect example for `[[` command.

Started byIlkka Virta <itvirta@iki.fi>
First post2019-09-21 22:15 +0300
Last post2019-09-21 22:15 +0300
Articles 1 — 1 participant

Back to article view | Back to gnu.bash.bug

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: Incorrect example for `[[` command. Ilkka Virta <itvirta@iki.fi> - 2019-09-21 22:15 +0300

#15396 — Re: Incorrect example for `[[` command.

FromIlkka Virta <itvirta@iki.fi>
Date2019-09-21 22:15 +0300
SubjectRe: Incorrect example for `[[` command.
Message-ID<mailman.743.1569093322.2190.bug-bash@gnu.org>
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 / itvirta@iki.fi

[toc] | [standalone]


Back to top | Article view | gnu.bash.bug


csiph-web