C++ 怎样用正则表达,,
答案:3 悬赏:50 手机版
解决时间 2021-03-21 19:19
- 提问者网友:雨不眠的下
- 2021-03-21 12:24
C++ 怎样用正则表达,,
最佳答案
- 五星知识达人网友:荒野風
- 2021-03-21 12:41
借用c的正则表达式库,需要引入头文件。支持POSIX.2正则表达式标准。简单用法如:
regex_t reg; //先声明一个正则表达式体。
regcomp(®, "[a-zA-Z]*", 0); //从字符串来编译这个表达式。
regmatch_t match[2]; //用来保存匹配结果。
regexec(®, "abcedfg", 2, match, 0); //匹配字符串。
此外,c++中也有自己的正则表达式库,比如boost::regex。需要先安装boost库才能使用。
regex_t reg; //先声明一个正则表达式体。
regcomp(®, "[a-zA-Z]*", 0); //从字符串来编译这个表达式。
regmatch_t match[2]; //用来保存匹配结果。
regexec(®, "abcedfg", 2, match, 0); //匹配字符串。
此外,c++中也有自己的正则表达式库,比如boost::regex。需要先安装boost库才能使用。
全部回答
- 1楼网友:时间的尘埃
- 2021-03-21 13:37
c++不可以用正则表达式,想用类正则表达式可以自己封装一个
- 2楼网友:冷風如刀
- 2021-03-21 12:51
1)首先这个错误是在于抛出了一个regex_error的异常,你捕获一下就可以了
2)在用字符串表示regex的时候,注意在字符串中间,\是反义字符,”\D"表示对D的转移,显然是错误的,所以如果要表示\D的正则需要使用“\\D",同样{也是关键字符,表示为“\\{"
3)然后我测试了一下(?<=)语法是regex库解析是不支持的,我给改为了下面的pattern,是可以用的:
regex pattern(".*\\}(\\D+)\\{.*");
char* buffer="{ffff}hello world!{ffff}";
cmatch m;
if(regex_match(buffer,m,pattern))
{
for(int i=0; i cout<<"str :"< }
2)在用字符串表示regex的时候,注意在字符串中间,\是反义字符,”\D"表示对D的转移,显然是错误的,所以如果要表示\D的正则需要使用“\\D",同样{也是关键字符,表示为“\\{"
3)然后我测试了一下(?<=
regex pattern(".*\\}(\\D+)\\{.*");
char* buffer="{ffff}hello world!{ffff}";
cmatch m;
if(regex_match(buffer,m,pattern))
{
for(int i=0; i
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯