我需要在boost(版本1.54)中用\ K替换一个后视表达式,因为它的限制但它不起作用。我该怎么做或问题是什么?有没有其他方法可以使用lookahead转换此表达式?
“(?< = foo。*)bar”=> “foo。* \ K bar”???
答案 0 :(得分:2)
这里有一个迟到的答案......
根据Boost.Regex 1.54 Documentation,使用Perl的\ K是可能的,我刚刚通过Sublime Text 3中的测试证实了它,它使用Boost.Regex作为其正则表达式搜索引擎。此外,我发现您发布的任何一种表单都没有明显的语法错误。我唯一能想到的是你在字符串文字中使用正则表达式,并没有转义\。如果是这种情况,那么您的示例的正确正则表达式将是:
foo.*\\K bar
如果不是这种情况,一种解决方法(显然具有性能影响)是反转字符串,然后使用可变宽度预测。
您的示例的修改后的正则表达式将是:
rab (?=.*oof)
答案 1 :(得分:0)
我认为问题在于Boost看向后方pattern must be of fixed length。
您的表达式包含重复.*
,使其变长。