草庐IT

regex_match

全部标签

使用 -O1 编译时 C++ regex_search 中断

这个问题在这里已经有了答案:Inconsistentbehaviorofstd::regex(1个回答)关闭3年前。示例代码:#include#include#includeintmain(){std::regexnpat(R"(^(\d+))");std::smatchm;std::regex_search(std::string("10"),m,npat);std::cout编译时g++-std=c++11main.cpp输出是2m.str(1):|10|10这是预期的。但是,当用编译时g++-std=c++11-O1main.cpp输出变成libc++abi.dylib:term

c++ - 没有匹配函数调用 ‘regex_search(...)'

给定一个旧式constchar*指针和一个长度,有没有一种方法可以调用std::regex_search()而无需先复制其内容缓冲区到std::string?这是我遇到的问题的一个简单示例:#includeintmain(){constchar*text="123foobar456";constsize_tlen=strlen(text);conststd::regexrx("(.+)bar");std::smatchwhat;std::regex_search(text,text+len,what,rx);//我认为需要两个迭代器的第5个std::regex_search()是我需要

c++ - 正则表达式无法按预期使用 C++ regex_match

我正在研究c++11中的正则表达式,这个正则表达式搜索返回false。有人知道我在这里做错了什么吗?.我知道.*代表除换行符之外的任意数量的字符。所以我期待regex_match()返回true并且输出被“找到”。然而,输出结果是“未找到”。#include#includeusingnamespacestd;intmain(){boolfound=regex_match("",regex("h.*l"));//worksfor""cout 最佳答案 您需要使用regex_search而不是regex_match:boolfound=

c++ - Xcode 错误 "No matching function for call to ' max'"

这是我正在使用的声明,但它说没有匹配函数来调用“max”max((used_minutes-Included_Minutes)*extra_charge,0)如有任何帮助,我们将不胜感激。编辑代码intused_minutes;constintIncluded_Minutes=300;doubletotal_charge,extra_charge;cout>used_minutes;cout 最佳答案 max()要求第一个和第二个参数的类型相同。extra_charge是一个double,它导致第一个和第二个参数具有不同的类型。尝试

c++ - 如何获得 std::regex 的所有可能匹配项

我想找到正则表达式的所有可能匹配项,这怎么可能?regexrx("(2|25)");strings="2225";for(sregex_iteratorit(s.begin(),s.end(),rx),end;it!=end;++it){coutposition()str()给出输出:0:21:22:25但找不到第三个2:2。我更喜欢使用正则表达式,因为O(n)同时搜索多个标记的复杂性。更新:也许将标记列表拆分为不可前缀的列表并创建多个正则表达式?例如:(2|4|25|45|251|455|267)=>(2|4),(25|45|267),(251|455)这会增加复杂度,比如O(nlo

c++11/regex - 搜索精确的字符串,转义

这个问题在这里已经有了答案:std::regexescapespecialcharactersforuseinregex(3个答案)关闭6年前。假设您有一个由用户提供的字符串。它可以包含任何类型的字符。例子是:std::strings1{"helloworld");std::strings1{".*");std::strings1{"*{}97(}{.}}\\testing___justa--%#$%#literal%$#%^"};...现在我想在一些文本中搜索>>的出现后跟输入字符串s1其次是.为此,我有以下代码:std::stringinput;//theinputtextstd:

c++ - 如何使用 C++ Boost 的 regex_iterator()

我正在使用Boost来匹配字符串中的子字符串。Io遍历结果,我需要使用regex_iterator().那是我找到的唯一用法示例,但我不理解回调。有人可以给我一个函数的用法示例吗?让我们假设我的输入文本是:"HelloeverybodythisisasentenseBlabla14..yesdate04/15/1986"我想得到:"Hello""everybody""this""is""a""sentense""bla""yes""date" 最佳答案 如果您不理解示例的唯一部分是回调,请考虑:std::for_each(m1,m2

c++ - 在没有括号的宏中使用逗号 : How can I mix and match with a template?

考虑一个简单的宏:#defineECHO(x)xECHO(foo(1,2))这会产生我们期望的准确输出:foo(1,2)上面的例子之所以有效,是因为预处理器识别了与函数调用相邻的括号。现在考虑如果我使用模板而不是函数调用会发生什么:ECHO(template)这会导致错误,因为预处理器会解释template和bool>作为宏的两个单独参数。预处理器无法识别范围!有没有办法在宏中使用这样的模板? 最佳答案 #defineCOMMA,ECHO(template)有点痛,但有效。FWIW,如果参数的语法允许(),则不需要替换,例如,ECH

c++ - 自定义转换算子模板和内置算子 : no match for operator

考虑以下MCVE。#includestructA{template::value,int>::type=0>operatorT()const{returnstatic_cast(1);}};intmain(){intx=1;Aa;returnx+a;}clang可以很好地编译它。DEMO但是GCC失败了:error:nomatchfor'operator+'(operandtypesare'int'and'A')returnx+a;~~^~~问题:谁是对的,为什么? 最佳答案 我相信clang是对的。要在+上查找,因为至少有一个参数

docker 错误提示 iptables No chain target match by that name

错误信息:iptables:Nochain/target/matchbythatname.问题描述重设宿主机网关、重启宿主机network.docker容器处于运行状态,同网段机器不能访问.宿主机执行开放端口命令,提示如下:[root@localhost~]#/sbin/iptables-AINPUT-ptcp--dport8686-jACCEPTiptables:Nochain/target/matchbythatname.解决办法1查看最新防火墙配置(检查端口是否更新,如已经更新请进行下一步)iptables-L2重启Docker服务(更新端口)servicedockerrestart