在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
);
感谢。
答案 0 :(得分:3)
不,我认为pcre2
没有这样的便利。请参阅下面的包装器。
但是,我相信可以准备调用pcre2_substitute的替换字符串而不受任何特殊限制。 (我现在无法测试。)明确指定使用转义字符($
)来捕获组或模式项,但我不明白为什么不能在函数/回调中使用它来形成替换串。
然后可以将其包装在具有所需签名的方法中。
来自pcre2api
的更多文档位于Creating a new string with substitutions
有一个C ++包装器JPCRE2。为此,它使用RegexReplace replace
方法。但是,在主页的大约一半时间,它也会通知我们
还有另一个替换函数(
jp::RegexReplace::nreplace()
),它使MatchEvaluator具有回调函数。当你必须根据某些标准动态创建替换字符串时,这是必需的。类
jp::MatchEvaluator
实现了几个构造函数重载,以采用不同的回调函数。
该页面继续使用jp::RegexReplace::nreplace()的完整示例。
分发中的测试文件中提供了更详细的示例。