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