草庐IT

regex_replace

全部标签

C++ regex_match 不工作

这是我的部分代码boolCSettings::bParseLine(constchar*input){//_asmINT3std::stringline(input);std::size_tposition=std::string::npos,comment;regexcvarPattern("\\.([a-zA-Z_]+)");regexparentPattern("^([a-zA-Z0-9_]+)\\.");regexcvarValue("\\.[a-zA-Z0-9_]+[]*=[]*(\\d+\\.*\\d*)");std::cmatchmatchedParent,matched

c++ - 为什么我的 Boost.Regex 搜索只报告一次匹配迭代?

我试图找出一个字符串中有多少个正则表达式匹配项。我正在使用迭代器来迭代匹配项,并使用整数来记录有多少匹配项。longintbefore=GetTickCount();stringtext;boost::regexre("^(\\d{5})\\s(\\d{8})\\s(.*)\\s(.*)\\s(.*)\\s(\\d{8})\\s(.{1})$");char*buffer;longlength;longcount;ifstreamf;f.open("c:\\temp\\test.txt",ios::in|ios::ate);length=f.tellg();f.seekg(0,ios::

c++ - 为什么 regex_match 抛出 "complexity exception"?

我正在尝试测试(使用boost::regex)文件中的一行是否仅包含由空格分隔的数字条目。我遇到了一个我不明白的异常(见下文)。如果有人能解释为什么抛出它,那就太好了。也许我在这里以定义模式的方式做了一些愚蠢的事情?这是代码://regex_test.cpp#include#include#includeusingnamespacestd;usingnamespaceboost;intmain(){//Mybasicpatterntotestforasinglenumericexpressionconststringnumeric_value_pattern="(?:-|\\+)?[[

Mysql——替换字段中指定字符(replace 函数)

一、简介函数将字符串中出现的所有子字符串替换为新的子字符串。 REPLACE() 函数是基于字符的替换,并且替换字符串时是区分大小写的。二、语法这里是MySQL REPLACE() 函数的语法:REPLACE(str,from_str,to_str)参数str必需的。原字符串。from_str必需的。被替换的子字符串。to_str必需的。用来替换的新子字符串。返回值REPLACE(str,from_str,to_str) 函数返回 str 中的所有 from_str 被 to_str 替换后的字符串。当任意一个参数为 NULL 时, REPLACE() 函数将返回 NULL。三、实例(1)查询

c++ - 为什么 Boost.Regex 不能在一个字符串中找到多个匹配项?

我正在编写一个小的命令行程序,它要求用户以ax^2+bx^1+cx^0的形式提供多项式。我稍后会解析数据,但现在我只是想看看我是否可以将多项式与正则表达式匹配(\+|-|^)(\d*)x\^([0-9*]*)我的问题是,它不匹配用户输入的多项式中的多个项,除非我将其更改为((\+|-|^)(\d*)x\^([0-9*]*))*(不同之处在于整个表达式被分组并且末尾有一个星号)。如果我键入诸如“4x^2”而不是“4x^2+3x^1+2x^0”之类的内容,则第一个表达式有效,因为它不多次检查。我的问题是,为什么Boost.Regex的regex_match()不能在同一个字符串中找到多个匹

c++ - 如何迭代 std::string 中的所有正则表达式匹配及其在 c++11 std::regex 中的起始位置?

我知道两种从std::string获取正则表达式匹配的方法,但我不知道如何获取所有匹配及其各自的偏移量。#include#include#includeintmain(){usingnamespacestd;strings="123apples456oranges789bananasorangesbananas";regexr=regex("[a-z]+");constsregex_token_iteratorend;//hereIknowhowtogetalloccurences//butdon'tknowhowtogetstartingoffsetofeachonefor(sreg

C++ 从 0 :n-1 (n > k) without replacement 范围内随机抽取 k 个数

我正在努力将MATLAB模拟移植到C++中。为此,我试图复制MATLAB的randsample()function.我还没有想出一个有效的方法来做到这一点。所以我问大家,在C++中,如何最好地从0:n-1(对于n>k)范围内随机抽取k个数字而不进行替换?我考虑过以下伪代码(灵感来自cppreference.com上的第三个示例),但我觉得它有点hacky:initializevectvofsizenfori=0ton-1v[i]=ishufflevreturnv[0tok-1]这里的缺点也是需要先构建一个庞大的数组。这似乎是缓慢/笨拙的矫枉过正。如果您能提供帮助,我很乐意在这里提供一些

c++ - regex_replace,为什么它会丢失 $1?

strings="'I'dgo.'";s=std::regex_replace(s,std::regex("((^|)')|('($|))"),"$1(Quotation,)");cout我想用(Quotation,)替换',我不想丢失原来的'。所以,我使用$1来表示原始的'。而且我不想替换I'd的'。^表示如果'位于字符串的开头,它将被替换。$表示字符串结束结果应该是:'(Quotation,)I'dgo.'(Quotation,)但实际上结果是'(Quotation,)I'dgo.(Quotation,)左侧引号替换工作正常,但右侧丢失了'。为什么? 最

c++ - 如何在 C++ 中使用 Boost::regex.hpp 库?

我尝试使用Boost库但失败了,请查看我的代码:#include"listy.h"#includeusingnamespaceboost;ListyCheck::ListyCheck(){}ListyCheck::~ListyCheck(){}boolListyCheck::isValidItem(std::string&__item){regexe("(\\d{4}[-]){3}\\d{4}");returnregex_match(__item,e);}当我尝试编译它时,我得到了这些消息:/usr/include/boost/regex/v4/regex_match.hpp:50:u

如何使用Regex表达式用于字母编号和字母数字字符

谁能帮助我以我的正则表达方式。我试图验证日期字符串,如下所示,1979年8月27日-上午5:25,任何人都可以通过使用大写小写字母,结肠文本和数字来帮助我修复我的代码。代码regula.custom({name:'AlphaSpecial',defaultMessage:"Thetextfieldcanonlycontainletters,numbersandalphanumericcharacters!",validator:function(){return/^[a-zA-Z0-9_.:-]*$/.test(this.value)}})看答案您可以尝试匹配^\w+\s\d{4}\s-\s\