我想出了一个回溯正则表达式,在https://regex101.com上工作得很好。当我使用flex
编译一个简单的reflex -u
(ish)程序时,表达式不会捕获回溯位 - 其他一切工作正常。
reflex
的文档表明它允许回收开箱即用,我在文档中找不到任何告诉我如何在使用reflex
替代flex
时允许回溯的内容。
据我从文档中可以看出,我必须使reflex
使用std::regex
,因为这是唯一支持回溯的引擎,在常规C ++程序中做起来似乎微不足道。
(*)常规旧的flex不是一个选项,因为它不支持unicode类;特别是它不支持识别大写字母。
回溯反射扫描仪在Perl模式下需要Boost。使用reflex -m=boost-perl
切换到Boost Perl正则表达式引擎。请参阅POSIX与Perl匹配的RE / flex文档部分:https://www.genivia.com/doc/reflex/html/index.html#reflex-posix-perl。