url的一些正则处理 一个比较高效的函数

小亮写的 我分析不出来了 只好一个一个试了 :-(

#include<iostream>

int pos_after_star(const char *str, int &point_num, char &wildcard_flash) 
{
    if(!str) 
    {   
        return 0;
    }   
    const char *_p  = str;
    char c          = *_p;
    int  pos        = 0;
    point_num   = 0;
    while(*_p) 
    {   
        if(c == '*') 
        {   
            pos            = _p + 1 - str;
            wildcard_flash = '1';
        }   
        else if ( c == '.' ) 
        {   
            point_num++;
        }   
        _p += 1;
        c = *_p;
    }   
    return pos;
}

int main()
{
    //const char* str = "*.baidu.com"; // 1 2 1
    const char* str = "www.*.baidu.com"; // 5 3 1
    //const char* str = "*.baidu.com.cn"; // 1 3 1
    //const char* str = "www.baidu.com.cn"; // 0 3 
    int pt = 0;                                                                                                                                          
    char flag;
    int ret = pos_after_star(str, pt, flag);
    std::cout<<"ret="<<ret<<std::endl; //*出现的位置 (从1开始数)
    std::cout<<"pt="<<pt<<std::endl; //点的个数
    std::cout<<"flag="<<flag<<std::endl; //有星就有正则
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值