转义序列\ K表示在boost库中的正则表达式

时间:2013-07-22 18:52:40

标签: boost boost-regex lookahead lookbehind

我需要在boost(版本1.54)中用\ K替换一个后视表达式,因为它的限制但它不起作用。我该怎么做或问题是什么?有没有其他方法可以使用lookahead转换此表达式?

“(?< = foo。*)bar”=> “foo。* \ K bar”???

2 个答案:

答案 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

您的表达式包含重复.*,使其变长。