【问题标题】:its possible c++ regex evaluator with lambdas like ruby? [duplicate]它可能带有像ruby这样的lambdas的c ++正则表达式评估器? [复制]
【发布时间】:2017-11-20 13:24:01
【问题描述】:

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

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

如果可以使用 lambda 表达式,我该怎么做

请帮帮我

【问题讨论】:

  • 这是另一个标记为 重复。尽管我首先发现了这一点,但我还是构建了一个序言,然后链接到代码。序言包含理解该链接中的代码所需的重要信息,因为绝对没有说明如何或为什么使用它。不幸的是,现在没有人会得到这种好处,他们只会被重定向。否则我会将其标记为 dup。你只是没有达到帮助中心的目的!!

标签: c++ ruby regex lambda functional-programming


【解决方案1】:

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

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

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

但是,如果你想提供一个回调函数来做你自己的
需要语言结构的格式?

在所有正则表达式领域,只需坐在一个
regex_search 循环并在其中构建您的新输出,
基于每场比赛。

好吧,就 C++(>=11) 而言,_你不能提供回调
自动执行此操作!
好难过啊。。

(Boost::Regex 将此内置到他们的正则表达式替换功能中
和选项(回调函子)。)

那么,你是做什么的?

您必须推出自己的通用 regex_replace() 类,该类需要一个
回调函数,它只做他们所描述的所有事情。

幸运的是,有人已经使用所有的花里胡哨的方法完成了这项工作 C++。

regex replace with callback in c++11?

尽情享受吧!

【讨论】:

  • 非常感谢大家
猜你喜欢
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多