C++正则表达式使用

来源:互联网 发布:韩顺平js完整视频教程 编辑:程序博客网 时间:2024/06/07 11:43

//1.示例程序

---该程序通过输入一个字符串,程序匹配是否符合字母数字下划线组成的2,6个字符。

#include <regex.h>
#include <stdio.h>
#include<string.h>
#include <stdlib.h>
/*正则匹配邮件地址*/

//regcomp regexec regfree regerror

int main(int argc,char *argv[])
{
    int status ,i;
    int cflags =REG_EXTENDED; //REG_EXTENDED,REG_ICASE,REG_NOSUB,REG_NEWLINE
    regmatch_t pmath[1];
    const size_t nmath = 1;
    regex_t reg;
    const char * pattern ="^[a-z]{1,6}[0-9]{2,6}$"; //正则表达式,字母数字下划线开头的2,6个字符。
    
    if(argc != 2)
    {
        printf("show usage\n");
        return 0;
    }    
    char buf[100];
    memcpy(buf,argv[1],strlen(argv[1]));
    regcomp(&reg,pattern,cflags); //编译正则表达式,第一个参数是编译后的数据,第二个参数是源正则,第三个表示编译的规则
    status = regexec(&reg,buf,nmath,pmath,0); //执行表达式以匹配,第一个参数是上面生成的,第二个参数是字符串,第三个表示匹配的数组个数,第四个表示匹配的数组地址,第五个暂时不需要。
    if(status == REG_NOMATCH)
        printf("No Match\n");
    else if(0 == status)
    {
        printf("success match\n");
    }
    regfree(&reg); //执行完后清理regex_t结构
    return 0;
}

2.正则表达式的表达。

^ 行首,$ 行尾,*表示若干个,+ 表示一个以上,?表示0个或一个,(.)表示任意一个字符,或者使用{}指明个数范围如{1,3}或者{1,}表示一个以上

| 表示或。[ ]指定字符集,在指定字符集时使用^表示除了某个字符,如[0-9],表示数字,[^0-9],表示不能是数字。

举例:

//校验密码:只能输入6-20个字母、数字、下划线

/^([a-z0-9_]){6,20}$/

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 20岁脸上有皱纹怎么办 内眼角下有皱纹怎么办 gta5买了车以后怎么办 htc卡在开机画面怎么办 cf里名字占用了怎么办 烫伤起了大水泡怎么办 手干活磨起泡了怎么办 手上磨了个水泡怎么办 手指磨出水泡了怎么办 手上磨了个泡怎么办 脚上的水泡破了怎么办 脚上水泡破了怎么办 烫伤之后破皮了怎么办 皮肤被烫伤破皮怎么办 烫伤起泡皮掉了怎么办 被烫伤起大水泡怎么办 被烫伤起小水泡怎么办 脚走路磨起泡了怎么办 脚趾头磨了个泡怎么办 脚趾头起了大泡怎么办 脚上有脚气起水泡很痒怎么办 脚底有水泡很痒怎么办 脚底磨得起泡了怎么办 脚底有水泡很疼怎么办 脚底硬皮走路疼怎么办 上火鼻子上长脓包怎么办 鼻子上总是长脓包怎么办 孕妇脚上长水泡很痒怎么办 脚气有水泡很痒怎么办 脚又痒又脱皮怎么办 手指出水泡很痒怎么办 鼻子里上火长泡怎么办 鼻子又干又痒怎么办 眼皮长了小水泡怎么办 眼皮上长了个泡怎么办 眼皮上长了粉刺怎么办 上眼皮又肿又疼怎么办 眼皮长了个痘怎么办 手指上小水泡痒怎么办 阴茎长了一个泡怎么办 干活累的腰疼怎么办