Wednesday, November 5, 2014

Re: Possible bug(s) in new regex engine involving \@> and \?

Not sure whether this is the same issue or not, but it seems to be
similar, at least, so I'm including it on this thread. If nothing
else, it can serve as a simple test for any eventual code fix...

--Old Engine--
echo matchlist('ababa', '\%#=1^\(a\%(ba\)*\(b\|$\)\)\?\(.*\)', '')
['ababa', 'ababa', '', '', '', '', '', '', '', '']

--New Engine--
echo matchlist('ababa', '\%#=2^\(a\%(ba\)*\(b\|$\)\)\?\(.*\)', '')
['ababa', 'abab', 'b', 'a', '', '', '', '', '', '']

Note how the new engine fails to match the second "ba" in the first
capture, apparently because the later...
\(b\|$\)
...takes the b and won't give it back.

Thanks,
Brett S.

On Mon, Jan 6, 2014 at 12:18 AM, Bram Moolenaar <Bram@moolenaar.net> wrote:
>
> Brett Stahlman wrote:
>
>> Possible bugs in new regex engine involving \@> and \?
>>
>> Using the following line of text...
>> 0123456789
>>
>> ...run the following two :substitute commands with both old and new regex engine, and notice the differences...
>>
>> s/\(01\)\(23\)\@>\(.*\)/--\1--\2--\3/
>> Old (\%=1)
>> --01--23--456789
>> New (\%=2)
>> ----23--456789
>>
>> s/\(01\)\(23\d\@=\)\?\(.*\)/--\1--\2--\3/
>> Old (\%=1)
>> --01--23--456789
>> New (\%=2)
>> --01----23456789
>>
>> Note: The \d\@= in the second example could be replaced with other
>> matching zero-width assertions (e.g., \%v) without changing the
>> results.
>
> I'll add a remark in the todo list. Thanks for the examples.
> Can you simplify them further? Can you also see the effect with only a
> search?
>
> --
> Laughing helps. It's like jogging on the inside.
>
> /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
> /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
> \\\ an exciting new programming language -- http://www.Zimbu.org ///
> \\\ help me help AIDS victims -- http://ICCF-Holland.org ///

--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments: