问题描述:
网上找的一悔派悄节代码,原来的头文件是:
#include <stdio.h>
#include <regex.h>
我改为下面,还是不能通过编译,代码未改.谢谢!
#include "stdafx.h"
#include "stdio.h"
#include "regex.h"
int main()
{
regex_t r
regmatch_t match
char * s="aaaabbbccc", *t=s
char * replace="1"
char result[100]must big enough
size_t pos=0,len=strlen(replace)
memset(result,0,100)
regp(&r,"a+",REG_EXTENDED)
while(regexec(&r,t,1,&match,0)==0)
{
printf("start:%lld,end:%lld\n",t-s+match.rm_so,t-s+match.rm_eo)absolute position in string s
memcpy(result+pos,t,match.rm_so)first copy the string that doesn't match
pos+=match.rm_sochange pos
memcpy(result+pos,replace,len)then replace
pos+=len
t+=match.rm_eofor another match
}
memcpy(result+pos,t,strlen(t))don't fet the last unmatch string
printf("%s",result)that's all.
regfree(&r)
return 0
}
解析:
很显然你的这个regex.h头羡大文件没有找到,或者你根本都没有定义这个头文件.这个头文件中包括许多数据内型碧渣说明,而且你的主程序像这样regex_t r
regmatch_t match的数据声名显然是和regex.h头文件是相关的.
c++的正则表达式在regex头文件尘余扰纯中,【#include<regex>】
首先,正则表达式常用的字符匹配方法,需要记住的特殊字符有:
遇到的问题:accountID是14个数字组成的字符串,匹配以“80”结尾的accountID,不能直接用‘80$’和'[8][0]$',必须14个全部派李滚匹配才行,正确匹配模板为”[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][8][0]“。regex_match(accountID,r)需要accountID整个字符串与模板r匹配才会返回True.
不需引入<码老regex.h>
c++11已迟渗升经封装了<regex>喊扮
即改为#include
<regex>即可
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)