我试图学习如何使用 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 中的回调?
享受!!