|
Message-ID: <20180907133805.FZif_%steffen@sdaoden.eu> Date: Fri, 07 Sep 2018 15:38:05 +0200 From: Steffen Nurpmeso <steffen@...oden.eu> To: musl@...ts.openwall.com Subject: Regex: behaviour of ? after () atom Hello. In perl this is $x="print 1 2"; if($x =~ /^(:[[:space:]]+)?([^[:space:]]+)(.*)$/){ print "<$0> -> <$1> <$2> <$3>\n" } and the result is </tmp/t.pl> -> <> <print> < 1 2> Now the same on AlpineLinux edge and musl-1.1.19-r10 with the MUA i maintain, which uses the normal regex stuff and calls it via echo eins=$3 vput vexpr i regex "${3}" \ '^(:[[:space:]]+)?([^[:space:]]+)(.*)$' \ '<\$0> -> <\$1> <\$2> <\$3>' echo i=$i which in C code does if((reflrv = regcomp(&re, argv[2], reflrv))){ ... goto jestr; } fprintf(stderr, "GOING for <%s> -> <%s> %u\n", argv[1],argv[2],n_NELEM(rema)); reflrv = regexec(&re, argv[1], n_NELEM(rema), rema, 0); and overall prints eins=print 1 2 GOING for <print 1 2> -> <^(:[[:space:]]+)?([^[:space:]]+)(.*)$> 17 i=<print 1 2> -> <> <> <> It works correctly if i remove the ()? atom, so i thought i should report that. Ciao, --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt)
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.