它可能的 C++ 正则表达式评估器与 Lambda 像 Ruby 一样?



我试图学习如何使用 lambda 表达式在 c++ 中编写正则表达式评估器

5;4 11;2 7;3
inputx.gsub(/(.*?);(.*?)n/) {   ($1.to_i - $2.to_i ).to_s + "n"   } 
1 9 4

如果可能的话,我如何使用lambda表达式来做到这一点

请帮助我

肮脏的小秘密是所有语言的所有
正则表达式替换函数都维护一个内部字符串,通过该字符串从头开始构造
输出。

输出是匹配之间的子字符串加上格式化形式的匹配
字符串的串联。

然后将新字符串返回给调用方。

但是,如果您想提供一个回调函数来执行需要
语言结构的自己的格式化怎么办?

在所有正则表达式领域,只需坐在一个
regex_search循环中并根据每个匹配项在其中构建新输出
,就很容易模拟这一点。

好吧,就 C++(>=11) 而言,_you无法提供回调来
自动执行此操作!!
很伤心呵呵。。

(Boost::Regex 已将其内置到他们的正则表达式替换函数中,作为
和选项(回调函子)。

那么,你会怎么做呢?

你必须滚动你自己的通用 regex_replace() 类,该类采用一个
回调函数,它所做的只是它们所描述的。

幸运的是,有人已经使用所有的花里胡哨做到了这一点 的C++。

正则表达式替换为 C++11 中的回调?

享受!!

最新更新