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


Groups > gnu.bash.bug > #14308

Re: Word boundary anchors \< and \> not parsed correctly on the right side of =~

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>

Show all headers | View raw


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


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