gpt4 book ai didi

c++ - 如何用PCRE2实现/e修饰符?

转载 作者:太空狗 更新时间:2023-10-29 21:14:02 26 4
gpt4 key购买 nike

在 Perl 中,我们可以做到这一点

s/pattern/func($1)/e

是否有任何方便的功能可以与 PCRE2 做同样的事情,比如

::pcre2_substitute_with_callback(
re, // the compiled pattern
pcuSubject, ccuSubject, // the subject and its length
PCRE2_SUBSTITUTE_GLOBAL, // the substitute options
matches,
NULL, // the match context
[](PCRE2_SPTR pcuMatched)->PCRE2_SPTR{ // the callback
return "replacement";
},
pcuResult, &ccuResult
);

谢谢。

最佳答案

不,我认为在pcre2 中没有这样的便利。不过请参阅下面的包装器。

但是,我相信调用 pcre2_substitute 的替换字符串可以在没有任何特别限制的情况下制备。 (我现在无法测试。)明确指定使用转义字符 ($) 捕获组或模式项,但我不明白为什么不能在函数/回调中使用它形成替换字符串。

然后可以将其包装在具有所需签名的方法中。

来自 pcre2api 的更多文档位于 Creating a new string with substitutions


有一个 C++ 包装器 JPCRE2 .它使用 RegexReplacereplace 方法以此目的。然而,在主页的一半左右,它还通知我们

There's another replace function (jp::RegexReplace::nreplace()) that takes a MatchEvaluator with a callback function. It's required when you have to create the replacement strings dynamically according to some criteria.

The class jp::MatchEvaluator implements several constructor overloads to take different callback functions.

该页面继续使用 jp::RegexReplace::nreplace() 的完整示例.

分发版的测试文件中提供了更详细的示例。

关于c++ - 如何用PCRE2实现/e修饰符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42104607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com