Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > gnu.bash.bug > #14308
| From | Ilkka Virta <itvirta@iki.fi> |
|---|---|
| Newsgroups | gnu.bash.bug |
| Subject | Re: Word boundary anchors \< and \> not parsed correctly on the right side of =~ |
| Date | 2018-07-10 15:52 +0300 |
| Message-ID | <mailman.3367.1531227154.1292.bug-bash@gnu.org> (permalink) |
| References | <5b440fe8.1c69fb81.948f6.4d1e@mx.google.com> <20180710122718.wrrzjuqpmpns4o4o@eeg.ccf.org> |
On 10.7. 15:27, Greg Wooledge wrote: > On Mon, Jul 09, 2018 at 10:46:13PM -0300, marcelpaulo@gmail.com wrote: >> Word boundary anchors \< and \> are not parsed correctly on the right side of a =~ regex match expression. > > Bash uses ERE (Extended Regular Expressions) here. There is no \< or \> > in an ERE. Or does it use the system's regex library, whatever that supports? On my Linux systems, this prints 'y' (with Bash 4.4.12 and 4.1.2): re='\<foo\>' ; [[ "foo bar" =~ $re ]] && echo y If '\<' matches just a regular less-than sign (but has a useless backslash), then surely that should not match? That's the same example marcelpaulo@gmail.com had, they didn't have the <> signs in the string. On my Mac, the above doesn't match. The same thing with a similar regex with \w . > http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04 > >> This evaluates as false: >> >> [[ 'foo bar' =~ \<foo\> ]] > > Well, of course it does, because \< is just a literal less-than sign > in a POSIX ERE. > > wooledg:~$ re='\<foo\>' > wooledg:~$ [[ '<foo>' =~ $re ]] && echo yes > yes > > You might as well remove the backslashes, because they serve no purpose > here. If you thought they meant "word boundary" or something, you're > in the wrong language. > -- Ilkka Virta / itvirta@iki.fi
Back to gnu.bash.bug | Previous | Next | Find similar | Unroll thread
Re: Word boundary anchors \< and \> not parsed correctly on the right side of =~ Ilkka Virta <itvirta@iki.fi> - 2018-07-10 15:52 +0300
csiph-web