• SSCANF 正则表达式


    以下文字从网上考过来

    以下在PC上是可以正常运行的,得到的结果应该也是正确的,但是根据在MTK上的调试结果,发现并不完全适用,比如

    char *t2="abc123\r\n";

    int a2 ;

    char b2[100];

    sscanf(t2,"%[a-z]%d" , b2,&a2 );

    得到 b2的结果是a ,a2的结果是123

     

    但是在 PC上的结果应该是 b2:abc  a2:123   具体原因不明

    是否是MTK对SSCNAF正则表达式的支持不够,还是我哪里写错了。

    实践证明,在不同的平台上,代码的执行效果并不一定一样!!

    sscanf函数和正则表达式
    ]
    sscanf函数和正则表达式
    此文所有的实验都是基于下面的程序:

        char str[100];
        char str2[100];
        int val;

        sscanf( "abaAAA" , "%*[a-z]%s" , str);
        printf("%s\n" , str );

        // ^ 表示 非  ^A-Z 表示不是大写字母
        sscanf( "aaaAAA" , "%*[^A-Z]%s" , str );
        printf("%s\n" , str);

        //得到的是ccc ,因为在遇到A的时候,已经
        //不满足正则表达式了,所以函数会停止
        sscanf("cccAAAbbb" , "%[a-z]" , str );
        printf("%s\n" , str);

        sscanf("abcBBBBBccd" , "%[a-z]%*[B]%[a-z]" , str , str2 );
        printf("%s %s\n" , str , str2 );

        sscanf("AAAaaBC=" , "%*[A-Z]%*[a-z]%[A-Z]" , str );
        printf("%s\n" , str);


        //需要提取  www.aisex.com  homepage 8080
        //%*c 为跳过一个字符
        //可以以http:// 等字符串去前端过滤,但是一定要是完全前端匹配
        sscanf("http://www.aisex.com/homepage:8080" , "http://%[^/]%*c%[^:]%*c%d" , str , str2 , &val );
        printf("%s %s %d\n" , str , str2 , val );

        //%*[^w]的意思是 过滤掉不是w的字符
        sscanf("http://www.aisex.com/homepage:8080" , "%*[^w]%[^/]%*c%[a-z]%*c%d" , str , str2 , &val );
        printf("%s %s %d\n" , str , str2 , val );


        //sscanf中如果参数是%s的话,遇到空格就认为是字符串结束了
        sscanf("hello, world" , "%s" , str );
        printf("%s\n" , str );

        //%[a3h]表示匹配a、h、3中的字符,与顺序无关
        sscanf("wh3a3333aaatthefuck" , "w%[ah3]" , str );
        printf("%s\n" , str );

        孕妇能用护肤品吗

  • 相关阅读:
    生成微博授权URL及回调地址
    微博三方登录
    celery异步发送短信
    celery配置
    celery原理与组件
    Django----短信验证接口
    Django----图片验证码接口
    编写注册接口
    jwt安装配置
    day19-Exception
  • 原文地址:https://www.cnblogs.com/rollrock/p/2337264.html
Copyright © 2020-2023  润新知