Finnbarr Murphy a écrit :
All,

Is the output from the following test script correct?

#!/usr/bin/ksh93

echo ${.sh.version}

var='A regular expressions test'

echo "1>  //e/#"
echo ${var//e/#}
echo "2>  //[^e]/#"
echo ${var//[^e]/#}
echo "3>  //+(e)/#"
echo ${var//+(e)/#}
echo "4>  //-(e)/#"
echo ${var//-(e)/#}
echo "5>  //?(e)/#"
echo ${var//?(e)/#}
echo "6>  //*(e)/#"
echo ${var//*(e)/#}
echo "7>  //!(e)/#"
echo ${var//!(e)/#}

The output is:

Version M 1993-12-28 s+
1>  //e/#
A r#gular #xpr#ssions t#st
2>  //[^e]/#
###e######e###e########e##
3>  //+(e)/#
A r#gular #xpr#ssions t#st
4>  //-(e)/#
A regular expressions test
5>  //?(e)/#
###########################
6>  //*(e)/#
###########################
7>  //!(e)/#
#

Note the extra "#" in test 5 and 6 while test 7 only outputs a single "#"

Is there a simple explanation?

Regards, Cordialement,

not sure the results are right, here.

using sed translated expressions :

var='A regular expressions test'

echo "1>  //e/#"
echo "${var}" | sed -e 's/e/#/g'
echo "2>  //[^e]/#"
echo "${var}" | sed -e 's/[^e]/#/g'
echo "3>  //+(e)/#"
echo "${var}" | sed -e 's/e\{1,\}/#/g'
echo "4>  //-(e)/#"
echo "${var}" | sed -e 's/-e/#/g'
echo "5>  //?(e)/#"
echo "${var}" | sed -e 's/e\{0,1\}/#/g'
echo "6>  //*(e)/#"
echo "${var}" | sed -e 's/e\{0,\}/#/g'
echo "7>  //!(e)/#"
echo "${var}" | /opt/ast/bin/sed -Ae 's/e!/#/g'
##

answers using gnu sed (cygwin) :

1>  //e/#
A r#gular #xpr#ssions t#st
2>  //[^e]/#
###e######e###e########e##
3>  //+(e)/#
A r#gular #xpr#ssions t#st
4>  //-(e)/#
A regular expressions test
5>  //?(e)/#
#A# #r#g#u#l#a#r# #x#p#r#s#s#i#o#n#s# #t#s#t#
6>  //*(e)/#
#A# #r#g#u#l#a#r# #x#p#r#s#s#i#o#n#s# #t#s#t#
7>  //!(e)/#
##

same results using ast sed (2008-02)...

so :

1 to 4 seems to be right, but 5 and 6 don't.
don't know about 7 ?

I am right ?

Cyrille Lefevre
--
mailto:[EMAIL PROTECTED]





_______________________________________________
ast-users mailing list
[email protected]
https://mailman.research.att.com/mailman/listinfo/ast-users

Reply via email to