草庐IT

regex_benchmark

全部标签

使用 -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++ - 如何获得 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++ std::regex 正则表达式查找多个匹配项

我正在尝试用C++解析证书,并认为这是学习Regex的好机会。我大约一个小时前才了解正则表达式,所以请原谅我缺乏知识。我正在寻找与条目关联的所有OU。我正在做以下事情:std::smatchOuMatches;std::stringmyCertSubject="O=\"MyCompany,Incorporated\",OU=TechnicianLevel-A3,OU=AccessLevel-1,CN=\"Name,My\",E=namem@company.com";std::regexsubjectRx("OU=[[:w:]|[:s:]|[:digit:]|-]*",std::rege

c++ - std::regex 构造函数抛出异常

请注意,这不是StackOverflow上有关gcc的许多问题的重复,我使用的是VisualStudio2013。这个正则表达式的简单构造会抛出std::regex_error:boolcaseInsensitive=true;charpattern[]="\\bword\\b";std::regexre(pattern,std::regex_constants::ECMAScript|(caseInsensitive?std::regex_constants::icase:0));what在异常对象上返回的实际错误是不一致的。通常它是不匹配的括号或括号。为什么?

REGEX,R和逗号

我在R中的正则弦线遇到了一些麻烦。str所以两个问题-为什么我的第一个想法不起作用,为什么第二次捕获在字符串结束之前,而不仅仅是第一个逗号?谢谢!看答案注意stringr正则风味是ICU。与tre不同,.不匹配ICURegex模式中的线路断裂。因此,可能的解决方法是使用(?s)-一种制造的dotall修饰符.匹配任何包括线路断路字符的字符-在您的模式开始时:str_match(str,"(?s)tags:(.+)\\d")和str_match(str,"(?s)tags:\n(.+)")但是,我觉得您需要在下面获取所有字符串tags:作为单独的匹配。我建议使用基础rregmatches/gre

c++ - 如何处理或避免 C++11 <regex> 匹配函数的异常(§28.11)?

从C++11开始header定义函数std::regex_match,std::regex_search和std::regex_replace在§28.11.我想这些函数不是noexcept是有正当理由的,但我找不到任何关于这些可能抛出的内容或原因的引用。这些函数可能抛出什么类型的异常?哪些运行时条件会导致抛出这些异常?标准是否确保这些函数永远不会抛出某些参数集,例如它是否确保regex_match(anyString,regex("."))从不抛出?PS:由于其中一些异常可能继承自std::runtime_error,他们mightthrowstd::bad_allocduringt