由于其局限性,我需要在 boost(版本 1.54)中将后视表达式替换为
\K
,但它不起作用。
我该怎么做或者有什么问题?
还有其他方法可以用lookahead转换这个表达式吗?
(?<=foo.*) bar
=> foo.*\K bar
这里的答案有点晚了......
根据 Boost.Regex 1.54 Documentation,可以使用 Perl 的 \K,我刚刚通过 Sublime Text 3 中的测试确认了这一点,Sublime Text 3 使用 Boost.Regex 作为其正则表达式搜索引擎。此外,我发现您发布的任何表格都没有明显的语法错误。我唯一能想到的是,您在字符串文字中使用正则表达式,并且没有转义 \。如果是这种情况,您的示例的正确正则表达式将是:
foo.*\\K bar
如果情况并非如此,一种解决方法(显然会影响性能)是反转字符串,然后使用可变宽度前瞻。
您的示例的修改后的正则表达式将是:
rab (?=.*oof)