gpt4 book ai didi

c++ - boost::regex_search - boost 再次杀死了我的脑细胞

转载 作者:太空宇宙 更新时间:2023-11-04 12:22:56 24 4
gpt4 key购买 nike

优秀的程序员让简单的事情变得容易,对吧?而且它不像 boost 文档那样让你的生活不那么不安......

我想要的只是一个实现:

// fulfils the function of a regex matching where the pattern may match a
// substring instead of the entire string
bool search( std::string, std::string, SomeResultType )

因此它可以用作:

std::string     text, pattern;
SomeResultsType match;

if( search( text, pattern, match ) )
{
std::string result = match[0];

if( match[1].matched )
// where this is the second capture group, not recapturing the same group
std::string secondMatch = match[1];

}

我希望我的客户端代码不被模板和迭代器打扰……我知道,我是个胆小鬼。在查看了 boost 文档中的意大利面条模板来做如此简单的事情之后一个小时,我觉得我的工作效率受到严重阻碍,而且我觉得我没有从中学到任何东西。

boost::regex_match 使用 boost::cmatch 做起来非常简单,除了它只匹配整个字符串,所以我一直在调整我的所有模式以匹配整个字符串,但我觉得这是一个肮脏的 hack并且更喜欢一些更合适的解决方案。如果我早知道会花这么长时间,我就会坚持使用 regex_match

也欢迎,为傻瓜阅读 boost 文档

下周在 使用 boost 保持简单和容易,函数绑定(bind)器!不,开玩笑,我不会对任何人那样做。

感谢大家的帮助

最佳答案

我想你想要 regex_search: http://www.boost.org/doc/libs/1_44_0/libs/regex/doc/html/boost_regex/ref/regex_search.html

可能这个重载就是你想要的:bool regex_search(const basic_string& s, match_results::const_iterator, 分配器>& m, const basic_regex& e, match_flag_type flags = match_default);

这似乎符合您的要求 - SomeResultsType 是 smatch,您需要先将您的模式转换为正则表达式。

关于c++ - boost::regex_search - boost 再次杀死了我的脑细胞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3987728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com