如何用PCRE2实现/e修饰符
How to implement /e modifier with PCRE2?
在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
的更多文档是创建一个带有替换的新字符串
有一个C++包装器JPCRE2。为此,它使用RegexReplace的replace
方法。然而,在主页进行到一半时,它也通知我们
还有另一个替换函数(
jp::RegexReplace::nreplace()
),它使用带有回调函数的MatchEvaluator。当您必须根据某些条件动态创建替换字符串时,这是必需的。类
jp::MatchEvaluator
实现了几个构造函数重载,以接受不同的回调函数。
该页继续提供jp::RegexReplace::nreplace()的完整用法示例。
发行版中的测试文件中提供了更详细的示例。
相关文章:
- 如何用数字处理log(0)
- 如何用转义符替换字符串中的所有特殊字符
- 如何用参数值调用函数(仅在运行时已知)
- 如何用RISC-V GD32VF103CBT6开发板卸载精确的ADC过采样
- 如何用for循环在c++中生成单词三角形
- 如何用C++编写BFS函数
- 当对话框被接受时,如何用参数调用槽
- 我不明白这段代码是如何对这个pythonlist()进行排序的,也不明白如何用C++中的向量来重现它
- 如何用前导零填充数组?
- 如何用 2 个对象过度引导运算符
- 如何用C / C++编写钢琴程序
- C++:如何用单个命令替换复杂的迭代?
- 如何用文本填充 std::vector<int64_t>
- 如何用 C 编译,但如果使用任何C++,则会抛出错误?
- 如何用 gcc 或 clang 模仿_mm256_loadu_epi32?
- 如何用正确的路径建立提升
- 如何用字符串填充数组?
- 如何用 c++ 编写单元测试?
- 如何用C++写一个基本的来回对话
- 如何用PCRE2实现/e修饰符