|
Message-ID: <20180907152517.QGi3S%steffen@sdaoden.eu> Date: Fri, 07 Sep 2018 17:25:17 +0200 From: Steffen Nurpmeso <steffen@...oden.eu> To: Rich Felker <dalias@...c.org> Cc: musl@...ts.openwall.com Subject: Re: Regex: behaviour of ? after () atom Rich Felker wrote in <20180907151821.GL1878@...ghtrain.aerifal.cx>: |On Fri, Sep 07, 2018 at 03:38:05PM +0200, Steffen Nurpmeso wrote: |> 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. | |What is the value of the flags argument you passed to regcomp? | REG_EXTENDED, optional REG_ICASE: reflrv = REG_EXTENDED; if(f & a_ICASE) reflrv |= REG_ICASE; if((reflrv = regcomp(&re, argv[2], reflrv))){ --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.